Java 三元算子的奇异行为
我有一个奇怪的情况,调试后我无法解释。我想用该模式设置标签文本: POI:“替换” 更换取决于三元操作,如下所示:Java 三元算子的奇异行为,java,string,ternary-operator,Java,String,Ternary Operator,我有一个奇怪的情况,调试后我无法解释。我想用该模式设置标签文本: POI:“替换” 更换取决于三元操作,如下所示: label.setText("POI: " + requestItem.getPoi() != null ? requestItem.getPoi() : "#####") requestItem.getPoi()返回字符串的类型,我想检查它是否返回字符串或null。如果为空,我想设置“#####” 问题在于requestItem.getPoi()!=无效的requestItem
label.setText("POI: " + requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
requestItem.getPoi()
返回字符串的类型,我想检查它是否返回字符串或null。如果为空,我想设置“#####”
问题在于requestItem.getPoi()!=无效的requestItem.getPoi():“#####”
当我在debugger中计算此值时,当requestItem.getPoi()返回null时,调试器抛出“类型不匹配:无法从字符串转换为void”
有人知道这个操作有什么问题吗?这个问题是由运算符优先级引起的,必须将三元表达式括在括号之间。试试这个:
"POI: " + (requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
该问题是由运算符优先级引起的,必须将三元表达式括在括号之间。试试这个:
"POI: " + (requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
Óscar López比我快:D但我有一点帮助,如果你尝试调试这样的东西,你可以尝试将东西提取到变量中,比如
String poiToPrint=requestItem.getPoi()!=无效的requestItem.getPoi():“#####”
。那么你就会看到它的价值了。(这个小片段也解决了你的问题:)(斯卡尔·洛佩斯比我快:D但我有一点帮助你,如果你尝试调试这样的东西,你可以尝试将东西提取到变量中,比如String poiToPrint=requestItem.getPoi()!=无效的requestItem.getPoi():“#####”
。那么你就会看到它的价值了。(这个小片段也解决了您的问题:))