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

POI:“替换”

替换取决于三元操作,如下所示:

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


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

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

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

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

最佳答案

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

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

关于java - 三元算子的怪异行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53780180/

10-10 04:26