Из-за правил вывода типов. Я не знаю, почему точно (вы должны проверить JSL, секция троичного оператора ), но кажется, что троичное выражение не выводит параметр типа из возвращаемого типа.
Другими словами, тип троичного выражения зависит от типов его операндов. Но один из операндов имеет неопределенный параметр типа (Collections.emptyList()
). В этот момент троичное выражение все еще не имеет типа, поэтому оно не может влиять на параметр типа. Выводится два типа: один - результат троичного выражения, а другой - параметр типа метода .emptyList()
.
Используйте Collections.<String>emptyList()
, чтобы явно установить тип