I have a piece code that fails to compile, and I cannot seem to understand why.
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
}
}
Compiler fails with:
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>