之前我从未使用过?
运算符,而我正试图找出它的工作原理。
我一直在阅读无数页面,并决定尝试自己。
我有以下声明:
getSelection().equalsIgnoreCase("Måned") ? calendarView.currentlyViewing.set(Calendar.Year) : showPopup();
因此,如果我不能理解左侧(布尔值)是否为真,它将设置我的calendarView.to year,如果不是(getSelection不等于måned),它将调用方法showPopup();
< / p>
但是当我输入eclipse时,我会收到语法错误。
有人可以解释我做错了吗?
答案 0 :(得分:15)
您正在尝试使用conditional ? :
operator来决定执行哪个语句。这不是它的意图。条件运算符不能用作语句 - 只能选择使用哪个表达式作为整体结果。
所以这很好:
foo(condition ? nonVoidMethod1() : nonVoidMethod2());
但这不是:
condition ? voidMethod1() : voidMethod2();
您应该在这里使用if
声明:
if (getSelection().equalsIgnoreCase("Måned")) {
calendarView.currentlyViewing.set(Calendar.Year);
} else {
showPopup();
}