我有一个无法编译的片段代码,我似乎无法理解为什么。
public class Main {
public static void main(String[] args) {
lookupStuff(Main::lookup);
}
private static <T> void lookupStuff(Function<Class<T>,T> locator) {
Integer i = locator.apply(Integer.class);
String s = locator.apply(String.class);
}
private static <T> T lookup(Class<T> cls) {
return null; // do some lookup
}
}
编译器失败了:
Error:(12, 42) java: incompatible types: java.lang.Class<java.lang.Integer> cannot be converted to java.lang.Class<T>
Error:(13, 40) java: incompatible types: java.lang.Class<java.lang.String> cannot be converted to java.lang.Class<T>