将泛型函数传递给泛型方法

时间:2017-09-28 18:22:21

标签: java generics lambda

我有一个无法编译的片段代码,我似乎无法理解为什么。

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>

0 个答案:

没有答案