关于泛型方法调用的 Java 类型提示

shi*_*kou 1 java generics types

我想知道调用具有如下签名的静态方法的正确方法是什么:

public static <T1, T2> Map<T1, Set<T2>> aggregate(List<Map<String, Object>> list, 
        String colK, String colV) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我很想这样称呼它:

Map<String, Set<Integer>> map = aggregate<String, Integer>(lData, "id", "ref");
Run Code Online (Sandbox Code Playgroud)

但它没有编译,除非我将其更改为:

Map<String, Set<Integer>> map = aggregate(lData, "id", "ref");
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么它不需要右侧的提示。相反给了我编译错误。它表示在右侧的提示后需要一个分号。第二种方法是调用该方法的正确方法吗?有人可以解释一下吗?

TNT*_*TNT 5

如图所示,调用该方法的方式是:

ClassName.<String, Integer>aggregate(lData, "id", "ref");
Run Code Online (Sandbox Code Playgroud)

其中ClassName是包含该方法的类的名称。

  • 不幸的是,在这种情况下你不能省略类名。 (3认同)