2 回答

TA貢獻1796條經(jīng)驗 獲得超4個贊
您可以GenericClass*實現(xiàn)一個通用的泛型接口,其中該方法返回泛型類型參數(shù)的實例。
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);
}

TA貢獻1725條經(jīng)驗 獲得超8個贊
您可以嘗試使用java.util.function.Function<T, R>.
它可能看起來像這樣:
public <R> R myFunction (Function<Object, R> func) {
return func.apply(parameter);
}
用法:
ReturnClass1 rc1 = myFunction(genericClass1::functionFromClass);
ReturnClass2 rc2 = myFunction(genericClass2::functionFromClass);
這種方法的優(yōu)點是你不需要你的泛型類來共享一個接口,所有的重構(gòu)都進入myFunction. 此接口是 Java 8 中引入的功能接口,您可以在 docs 中閱讀有關它的更多信息。簡單地說,它定義了一個函數(shù),該函數(shù)接受一個 type 類型的參數(shù)T并返回一個 type 值R。
奇怪的::是一個方法參考
添加回答
舉報