2012-02-22 162 views
2

我遇到了应该导致在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) 

这因此不能正常工作,我得到以下错误:

The expression of type boolean is boxed into Boolean

我正在推翻这一个,但我无法解决它。

感谢您的帮助。

+0

所以...这个工程,但你希望它更优雅? – FrustratedWithFormsDesigner 2012-02-22 19:09:17

+1

不,不幸的是,它不工作,我得到了错误更新在我的文章。 – adis 2012-02-22 19:12:22

回答

2

您是否在寻找...

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

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

+0

这不起作用。它在showDetailGroup上给出错误,如果我尝试这个。错误是:Boolean类型的表达式被解除布尔值。 – adis 2012-02-22 19:15:05

+0

@adis,我编辑了我的答案。您还需要在布尔表达式(.booleanValue()方法)中将布尔值转换回布尔值。最初我没有注意到。 – 2012-02-22 19:16:51

+0

正确,这个作品,谢谢! – adis 2012-02-22 19:20:18

1

布尔值(大写字母B)不能在布尔表达式中使用而不拆开它。

如果你想保持沉默的警告,通过调用booleanValue函数转换布尔值基本类型(这是发生了什么事与拆箱幕后):

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

布尔和整型是原语布尔包装类和int。您应该将变量更改为布尔型和整型,并在稍后通过引用函数来传递它们时将其包含在内。