条件运算符中的类型不匹配(java)

时间:2014-08-07 19:13:06

标签: javac

我不明白为什么以下不会导致错误。

boolean condition = <whatever>;
return condition ? Collections.singleton("a field") : Collections.EMPTY_LIST;

Collections.singleton()会返回java.util.Set,显然与EMPTY_LIST的类型不同。

这真的不会导致类型不匹配错误吗?

1 个答案:

答案 0 :(得分:0)

Collections.singleton()Collections.EMPTY_LIST都会实现Collection(并为此扩展Object)。不需要进行类型转换即可将三元运算符的结果作为CollectionObject返回。

java编译器找到与两个部分匹配的最具体的类型。原始类型会变得棘手,但只有void被禁止。请参阅conditional operator上的Java语言规范。