【发布时间】:2011-12-26 16:46:14
【问题描述】:
这是讨论的后续问题:
Why doesn't the diamond operator work within a addAll() call in Java 7?
来自 Java 教程,
http://docs.oracle.com/javase/tutorial/java/generics/gentypeinference.html
请注意,菱形通常在方法调用中起作用;但是,为了更清楚起见,建议您主要使用菱形来初始化声明它的变量
所以,我对第一行有点困惑。什么时候菱形在方法调用中起作用?
更多关于钻石运算符如何工作的解释可以在这里找到:
从此,我尝试了以下方法,效果很好:
假设我有:
private static class Box<T>{
public Box(T t){}
}
static void f(Box<Integer> box){}
类似以下的调用编译良好:
f(new Box<>(new Integer(10)));
上面f()的方法调用中调用构造函数的类型参数是从构造函数的参数推断出来的(即Integer)。
这就是教程所说的意思
请注意,菱形通常在方法调用中起作用
如果没有,谁能提供一个例子,钻石在方法调用中工作?
【问题讨论】:
-
@gurung 这是一个错字。剪切和粘贴的坏情况:(
标签: java java-7 diamond-operator