三元算子的怪异行为

时间:2018-12-14 12:52:02

标签: java string ternary-operator

我有奇怪的情况,调试后无法解释。我想用该模式设置标签文本:

兴趣点:“替换”

替换取决于以下三元操作:

label.setText("POI: " + requestItem.getPoi() != null ? requestItem.getPoi() : "#####")

requestItem.getPoi()返回String的类型,我想检查是否返回String或null。如果为null,我要设置'#####'。

问题出在requestItem.getPoi() != null ? requestItem.getPoi() : "#####"

当我在requestItem.getPoi()返回null的调试器中评估此值时,调试器将引发“类型不匹配:无法从String转换为void”。

任何人都知道此操作有什么问题吗?

1 个答案:

答案 0 :(得分:5)

问题是由运算符优先级引起的,必须将括号之间的三元表达式括起来。试试这个:

"POI: " + (requestItem.getPoi() != null ? requestItem.getPoi() : "#####")