繁体   English   中英

三元算子的怪异行为

[英]Weird behavior of ternary operator

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

POI:“替换”

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM