2014-08-07 6 views
0

Я не понимаю, почему следующее НЕ должно было вызывать ошибку.Тип-несоответствие в условном операторе (java)

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

Collections.singleton() возвращает java.util.Set, который, очевидно, не тот же тип EMPTY_LIST.

Должно ли это НЕ НЕВОЗдать ошибку типа-несоответствия?

ответ

0

И Collections.singleton(), и Collections.EMPTY_LIST орудие Collection (и удлинение Object в этом отношении). Преобразования типов не нужны, чтобы вернуть результат тернарного оператора как Collection или Object.

Компилятор java находит наиболее специфический тип, соответствующий обеим частям. Это становится сложным с примитивными типами, но только void категорически запрещено. См. Спецификацию языка Java на conditional operator.

Смежные вопросы