一尘不染

为什么我不能显式地将类型参数传递给泛型Java方法?

java

我定义了一个Java函数:

static <T> List<T> createEmptyList() {
    return new ArrayList<T>();
}

一种调用方式是这样的:

List<Integer> myList = createEmptyList(); // Compiles

为什么不能通过显式传递泛型类型参数来调用它?:

Object myObject = createEmtpyList<Integer>(); // Doesn't compile. Why?

Illegal start of expression从编译器得到错误。


阅读 208

收藏
2020-12-03

共1个答案

一尘不染

当Java编译器无法自行推断静态方法的参数类型时,您始终可以使用完整的合格方法名称Class来传递它。<类型> method();

Object list = Collections.<String> emptyList();
2020-12-03