在静态导入泛型方法时,如何调用具有类型的泛型方法?

2022-09-04 21:16:04

我发现你可以调用一个具有特殊类型的泛型方法,例如:

假设我们有一个通用方法:

class ListUtils {
    public static <T> List<T> createList() {
        return new ArrayList<T>();
    }
}

我们可以这样称呼它:

List<Integer> intList = ListUtils.<Integer>createList();

但是,当它静态导入时,我们怎么能称呼它呢?例如:

List<Integer> intList = <Integer>createList();

这不起作用。


答案 1

你不能。您必须使用类名引用它。

似乎有:

void foo(List<String> a) {}

和调用不会推断出正确的类型。因此,您应该显式使用类名,例如或使用中间变量:foo(createList())ListUtils.createList()

List<String> fooList = createList();
foo(fooList);

最后,番石榴有,所以你最好重复使用它。Lists.newArrayList()


答案 2

以下内容对我有用:

package test;
import java.util.List;
import static test.ListUtils.createList;

public class ListConsumer {
    public static void main(String[] args) {
        List<Integer> list = createList();
        List<String> list2 = createList();
    }
}

推荐