0

我以前从未使用过?运算符,我正在尝试弄清楚它是如何工作的。

我已经阅读了无数页,并决定为自己尝试。

我有以下声明:

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

因此,据我所知,如果左侧(布尔值)为真,它将设置我的 calendarView.to 年份,如果不是(getSelection 不等于 måned),它将调用该方法showPopup();

但是当我在eclipse中输入这个时,我得到一个语法错误。

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

4

1 回答 1

15

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

所以这很好:

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

但这不是:

condition ? voidMethod1() : voidMethod2();

你应该在if这里使用一个语句:

if (getSelection().equalsIgnoreCase("Måned")) {
    calendarView.currentlyViewing.set(Calendar.Year);
} else {
    showPopup();
}
于 2013-03-27T11:38:47.650 回答