三元运算符的奇怪行为
Weird behavior of ternary operator
我遇到了奇怪的情况,调试后无法解释。我想使用该模式设置标签文本:
兴趣点:"replacement"
替换取决于三元运算,如下所示:
label.setText("POI: " + requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
requestItem.getPoi()
returns 类型的字符串,我想检查它是 returns 字符串还是 null。如果为空,我想设置 '#####'。
问题出在 requestItem.getPoi() != null ? requestItem.getPoi() : "#####"
当 requestItem.getPoi() returns 空调试器抛出 "Type mismatch: Cannot convert from String to void".
时,我在调试器中评估此值
有人知道这个操作有什么问题吗?
问题是由运算符优先级引起的,必须用括号将三元表达式括起来。试试这个:
"POI: " + (requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
我遇到了奇怪的情况,调试后无法解释。我想使用该模式设置标签文本:
兴趣点:"replacement"
替换取决于三元运算,如下所示:
label.setText("POI: " + requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
requestItem.getPoi()
returns 类型的字符串,我想检查它是 returns 字符串还是 null。如果为空,我想设置 '#####'。
问题出在 requestItem.getPoi() != null ? requestItem.getPoi() : "#####"
当 requestItem.getPoi() returns 空调试器抛出 "Type mismatch: Cannot convert from String to void".
时,我在调试器中评估此值有人知道这个操作有什么问题吗?
问题是由运算符优先级引起的,必须用括号将三元表达式括起来。试试这个:
"POI: " + (requestItem.getPoi() != null ? requestItem.getPoi() : "#####")