当我尝试按如下方式使用钻石操作符时:
List<DateTimeZone> list = new ArrayList<>();
效果很好。
然而,当我尝试这个时:
List<DateTimeZone> list = false ? null : new ArrayList<>();
它没有编译,消息传递: &#34;不兼容的类型:必需列表,找到ArrayList&#34;。
为什么?
答案 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