我正在學習有關在Java 8中存在的FunctionalInterface
。在做了一些基本的功能性示例之後,我試圖對GenericType參數進行相同的操作。Java 8通用java.util.Function
public class Main {
public enum LocType {
Area, Country
}
public <T> Function<T, T> getCreateFunction(LocType type) {
AreaService areaService = new AreaService();
CountryService countryService = new CountryService();
switch(type) {
case Area : return areaService::createArea;
case Country : return countryService::createCountry;
default : return null;
}
}
}
public class AreaService {
public Area createArea(Area area) {
// some logic
return area;
}
}
public class CountryService {
public Country createCountry(Country country) {
// some logic
return country;
}
}
// Area & Country are Model Classes
但是Eclipse編譯器會引發錯誤的
The type AreaService does not define createArea(T) that is applicable here
難道就沒有可能在FunctionalInterface定義泛型類型參數..?
您不能有一個泛型函數,其返回類型取決於運行時參數:返回類型在編譯時確定;該參數的值僅在運行時才知道。 –
此外,看起來對我很可疑。這就是說這個泛型依賴於兩種類型,但它們必須是相同的。除非我錯過了什麼?編輯:等等,我現在看到,沒關係。 –
目前還不清楚'createArea()'和'createCountry()'的返回類型是什麼。此外,您可能需要考慮'UnaryOperator'而不是'Function '(假設這裏是正確的)。 –
shmosel