Возможный дубликат:
Ярлык или назначение (| = ) оператор в Java
Я нашел следующий пример кода в документации Android SDK:
boolean retValue = false;
retValue |= mActionBarHelper.onCreateOptionsMenu(menu);
retValue |= super.onCreateOptionsMenu(menu);
Может ли кто-нибудь показать мне эквивалентный код, чтобы продемонстрировать, что он делает?
Примечание: я предполагаю, что вызовы методов возвращают логическое значение, поэтому мне нравится видеть пример того, как это выглядит как конструкция if-else.
Ответ 1 · рейтинг 2 · Mattias Isegran Bergander
Сокращение для or с собой и назначить мне, хотя это не короткое замыкание or вместо логического or. Поскольку он доступен как краткая версия присваивания and or: ing, иногда используется в любом случае с логическими значениями, поскольку нет || =. Но важное замечание: в этом случае он будет вызывать оба метода, даже если retValue уже может быть true
Таким образом, эквивалентных (логических) утверждений может быть несколько, но некоторые из них будут:
boolean a = mActionBarHelper.onCreateOptionsMenu(menu);
boolean b = super.onCreateOptionsMenu(menu);
boolean retValue = a || b;
or
boolean retValue = mActionBarHelper.onCreateOptionsMenu(menu);
retValue = super.onCreateOptionsMenu(menu) || retValue;
Ответ 2 · рейтинг 8 · Marko Topolnik
| к логическому значению применяется просто логическое ИЛИ.
boolean retValue = false;
retValue = retValue | mActionBarHelper.onCreateOptionsMenu(menu);
retValue = retValue | super.onCreateOptionsMenu(menu);