3

当我尝试按如下方式使用菱形运算符时:

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

它完美地工作。

但是,当我尝试这个时:

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

它不编译,消息:“不兼容的类型:必需的列表,找到 ArrayList”。

这是为什么?

4

1 回答 1

4

三元算子和菱形算子相处得不是很好。您必须明确指定类型:

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

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

Java 三元运算符对泛型类型推断的影响

JDK 7中泛型和三元运算符的编译错误

于 2014-09-18T12:46:01.863 回答