Как написать правильное выражение для результата в Boolean?(Невозможно привести от логического значения к логическому) - PullRequest
2 голосов
/ 22 февраля 2012

Я испытываю трудности с выражением, которое должно привести к отображению или скрытию полосы в iReport.

У меня есть следующие переменные:

Integer mainGroupInt = Integer.valueOf(5);
Integer subGroupInt = Integer.valueOf(5);
Boolean showDetailGroup = Boolean.valueOf(false);

Результат должен бытьBoolean, поэтому я попробовал следующее:

mainGroupInt.intValue() != 0 && subGroupInt.intValue() != 0)) || (mainGroupInt.intValue() != 0 && showDetailGroup)

Это, таким образом, не работает, я получаю следующую ошибку:

Выражение типа boolean упаковано в Boolean

Я обдумываю это, но не могу решить.

Спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 22 февраля 2012

Вы ищете ...

showDetailGroup = Boolean.valueOf( (mainGroupInt.intValue() != 0 && subGroupInt.intValue() != 0) || 
                                   (mainGroupInt.intValue() != 0 && showDetailGroup.booleanValue()) )

Если нет, я не понимаю вашего вопроса.Приведенный выше код возвращает Boolean, представляющее значение выражения boolean.См. Java Boolean.valueOf () и Boolean.booleanValue () документы.

1 голос
/ 22 февраля 2012

Boolean и Integer являются классами-обертками для примитивов boolean и int.Вы должны изменить свои переменные на boolean и int и обернуть их позже, если вам нужно передать их по ссылке на функцию.

1 голос
/ 22 февраля 2012

Boolean (с заглавной буквой B) нельзя использовать в логических выражениях без распаковки.

Если вы хотите отключить предупреждение, преобразуйте Boolean в примитивный тип, вызвав функцию booleanValue (это то, что происходитза сценой с распаковкой):

mainGroupInt.intValue() != 0 && showDetailGroup.booleanValue( )
...