的?布尔禅运算符

时间:2013-03-27 11:36:59

标签: java boolean boolean-operations

之前我从未使用过?运算符,而我正试图找出它的工作原理。

我一直在阅读无数页面,并决定尝试自己。

我有以下声明:

 getSelection().equalsIgnoreCase("Måned") ? calendarView.currentlyViewing.set(Calendar.Year) : showPopup();

因此,如果我不能理解左侧(布尔值)是否为真,它将设置我的calendarView.to year,如果不是(getSelection不等于måned),它将调用方法showPopup(); < / p>

但是当我输入eclipse时,我会收到语法错误。

有人可以解释我做错了吗?

1 个答案:

答案 0 :(得分:15)

您正在尝试使用conditional ? : operator来决定执行哪个语句。这不是它的意图。条件运算符不能用作语句 - 只能选择使用哪个表达式作为整体结果。

所以这很好:

foo(condition ? nonVoidMethod1() : nonVoidMethod2());

但这不是:

condition ? voidMethod1() : voidMethod2();

您应该在这里使用if声明:

if (getSelection().equalsIgnoreCase("Måned")) {
    calendarView.currentlyViewing.set(Calendar.Year);
} else {
    showPopup();
}