三元运算符的奇怪行为

Raf*_*ski 0 java string ternary-operator

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

POI:"替代"

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

label.setText("POI: " + requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
Run Code Online (Sandbox Code Playgroud)

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

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

当我在调试器中评估此值时,requestItem.getPoi()返回null调试器抛出"类型不匹配:无法从String转换为void".

任何人都知道这个操作有什么问题?

Ósc*_*pez 5

问题是由运算符优先级引起的,您必须在括号之间包围三元表达式.试试这个:

"POI: " + (requestItem.getPoi() != null ? requestItem.getPoi() : "#####")
Run Code Online (Sandbox Code Playgroud)