Можно заставить GenericClass*
реализовать общий универсальный интерфейс, в котором метод возвращает экземпляр параметра универсального типа.
interface GenericInterface<T> {
T functionName(Object parameter); //change parameter type
}
Затем его можно расширить на GenericClass*
:
class GenericClass1 implements GenericInterface<ReturnsClass1> {
public ReturnsClass1 functionName(Object parameter) {
...
}
}
Таким же образом GenericClass2
будет реализовывать GenericInterface<ReturnsClass2>
, а GenericClass3
будет реализовывать GenericInterface<ReturnsClass3>
.
Ваш метод будет выглядеть следующим образом:
public <T> T myFunction (GenericInterface<T> classInstance) {
return classInstance.functionName(parameter);
}