相关疑难解决方法(0)

如何推断泛型方法调用的类型参数?

有这样的方法吗?

public <P, T extends List<P>> T getAwesomeList() {
    // ...
} 
Run Code Online (Sandbox Code Playgroud)

怎么编译没有任何警告?

Set<String> test = getAwesomeList();
Run Code Online (Sandbox Code Playgroud)

我认为这与通用擦除有关,但不确定编译器是怎么回事.这种情况发生在Java 7上,8时你会收到编译错误.

J8上有什么变化让这个不能编译?

更新:

经过仔细检查后,它还可以在Java 8上编译.

java generics type-inference java-7 java-8

6
推荐指数
0
解决办法
238
查看次数

Collections.reverseOrder如何在返回Comparator &lt;T&gt;时知道要使用的类型参数

根据Java API规范,Collections.reverseOrder的签名为

public static <T> Comparator<T> reverseOrder()

方法说明中给出的示例说它需要用作

Arrays.sort(a, Collections.reverseOrder());

当我们调用该方法时,我们在任何地方都没有指定使用哪种类型(T解析为哪种类型)。

在这种情况下,编译器如何解析T?是否可以根据分配给它的对象的类型来解析返回类型(T)?

顺便说一句,我知道重载的reverseOrder(Comparator<T> c)方法。

java

5
推荐指数
1
解决办法
2322
查看次数

标签 统计

java ×2

generics ×1

java-7 ×1

java-8 ×1

type-inference ×1