这是一个关于讨论的后续问题:
为什么在Java 7中diamond操作符在addAll()调用中无法工作?
根据Java教程,
http://docs.oracle.com/javase/tutorial/java/generics/gentypeinference.html
请注意,diamond经常在方法调用中起作用;但是,为了更清晰,请主要在声明变量时使用diamond
所以,我有点困惑第一行。在什么情况下diamond在方法调用中起作用?
有关diamond操作符如何工作的更多解释可以在这里找到:
从这里,我尝试了以下代码,它可以正常工作:
假设我有:
private static class Box<T>{
public Box(T t){}
}
static void f(Box<Integer> box){}
以下这样的调用可以编译通过:
f(new Box<>(new Integer(10)));
在上面的
f()
方法调用中,通过构造函数的参数(即Integer
)推断出类型参数。这是教程所说的钻石语法在方法调用中起作用的意思吗?如果不是,请有好心人提供一个钻石语法在方法调用中起作用的例子。