java diamond运算符无法编译

时间:2014-09-18 12:39:41

标签: java diamond-operator

当我尝试按如下方式使用钻石操作符时:

List<DateTimeZone> list = new ArrayList<>();

效果很好。

然而,当我尝试这个时:

List<DateTimeZone> list = false ? null : new ArrayList<>();

它没有编译,消息传递: &#34;不兼容的类型:必需列表,找到ArrayList&#34;。

为什么?

1 个答案:

答案 0 :(得分:4)

三元运营商和钻石运营商相处得不是很好。您必须明确指定类型:

List<Date> list = false ? null : new ArrayList<Date>();

有关这些相关问题的更多信息:

Java ternary operator influence on generics type inference

Compilation error with generics and ternary operator in JDK 7