如何将正确的表达式写入布尔值? (无法从布尔值转换为布尔值)

时间:2012-02-22 19:07:44

标签: java jasper-reports ireport boolean-expression

我遇到一个表达式会遇到困难,导致在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类型的表达式被装入布尔值

我正在思考这个但我无法解决它。

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

你在找......

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

如果没有,我不明白你的问题。上面的代码返回表示Boolean表达式值的boolean。请参阅Java Boolean.valueOf()Boolean.booleanValue()文档。

答案 1 :(得分:1)

布尔值(使用大写字母B)不能在布尔表达式中使用而不将其取消装箱。

如果你想要使警告静音,可以通过调用booleanValue函数将布尔值转换为基本类型(这是在取消装箱的场景背后发生的事情):

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

答案 2 :(得分:1)

Boolean和Integer是基元boolean和int的包装类。您应该将变量更改为boolean和int,如果必须通过引用函数传递它们,请将它们包装起来。