这会在Eclipse IDE中产生错误。(错误符号出现在行号附近)

String[] allText = null;

之后,我完成了一些工作,例如初始化数组等等。但是根据某些条件。所以我想使用如下条件运算符。
List<String> finalText = (allText != null) ?
    Arrays.asList(allText) : (List<String>) Collections.emptyList();

如果我将转换放在等号之后,则效果很好。(包装完整的三元运算)
出现这种错误的目的是什么?
List<String> allHotels = (List<String>) ((allText != null) ?
    Arrays.asList(allText) : Collections.emptyList());

最佳答案

之所以提示,是因为编译器试图将强制类型转换应用于三元运算符的第一部分而不是整个表达式。所以这部分代码:

(List<String>) (allText != null)

这就是强制转换,但是(allText != null)的计算结果为 boolean 值。要进行转换,您需要包含整个表达式,如下所示:
List<String> allHotels = (List<String>) ((allText != null) ?
Arrays.asList(allText) : Collections.emptyList());

注意整个三元运算符的括号。

实际上,您实际上根本不需要执行任何强制转换,因为编译器在执行Collections.emptyList()时会推断出正确的类型

10-04 18:25