我不明白为什么以下不会导致错误。
boolean condition = <whatever>;
return condition ? Collections.singleton("a field") : Collections.EMPTY_LIST;
Collections.singleton()
会返回java.util.Set
,显然与EMPTY_LIST
的类型不同。
这真的不会导致类型不匹配错误吗?
答案 0 :(得分:0)
Collections.singleton()
和Collections.EMPTY_LIST
都会实现Collection
(并为此扩展Object
)。不需要进行类型转换即可将三元运算符的结果作为Collection
或Object
返回。
java编译器找到与两个部分匹配的最具体的类型。原始类型会变得棘手,但只有void
被禁止。请参阅conditional operator上的Java语言规范。