我有奇怪的情况,调试后无法解释。我想用该模式设置标签文本:
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/