相关疑难解决方法(0)

方法调用中的Java 7 Diamond操作

这是一个关于讨论的后续问题:

为什么菱形运算符不能在Java 7中的addAll()调用中工作?

从Java教程中,

http://docs.oracle.com/javase/tutorial/java/generics/gentypeinference.html

请注意,钻石通常用于方法调用; 但是,为了更加清晰,建议您主要使用钻石来初始化声明它的变量

所以,我对第一行感到有点困惑.当确实在方法调用钻石的工作?

关于钻石操作员如何工作的更多解释可以在这里找到:

http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#What%20is%20type%20argument%20inference%20for%20constructors

从这个,我尝试了以下,这很好:

给我有:

private static class Box<T>{
    public Box(T t){}
}
static void f(Box<Integer> box){}
Run Code Online (Sandbox Code Playgroud)

像下面这样的调用编译好:

f(new Box<>(new Integer(10)));
Run Code Online (Sandbox Code Playgroud)

f()上面的方法调用中调用构造函数的类型参数是从构造函数的参数推断出来的(即Integer).

这就是本教程所说的意思

请注意,钻石通常用于方法调用

如果没有,任何人都可以提供钻石在方法调用中工作的示例吗?

java diamond-operator java-7

9
推荐指数
1
解决办法
1749
查看次数

标签 统计

diamond-operator ×1

java ×1

java-7 ×1