2

我在处理应导致在 iReport 中显示或隐藏波段的表达式时遇到困难。

这些是我拥有的变量:

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

结果必须是 a Boolean,所以我尝试了以下方法:

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

因此这不起作用,我收到以下错误:

boolean 类型的表达式被装箱成 Boolean

我想太多了,但我无法解决它。

谢谢你的帮助。

4

3 回答 3

3

你在寻找...

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

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

于 2012-02-22T19:12:00.800 回答
2

布尔表达式(大写 B)不能在布尔表达式中使用,除非将其拆箱。

如果要使警告静音,请通过调用booleanValue函数将 Boolean 转换为原始类型(这是取消装箱的幕后情况):

mainGroupInt.intValue() != 0 && showDetailGroup.booleanValue( )
于 2012-02-22T19:16:20.893 回答
1

Boolean 和 Integer 是原语 boolean 和 int 的包装类。如果必须通过引用函数将它们传递,则应将变量更改为 boolean 和 int 并稍后将它们包装起来。

于 2012-02-22T19:31:30.853 回答