在java中改变类函数中的布尔值

时间:2012-04-15 12:23:56

标签: java

我们可以在java中修改类函数中的布尔值,这样的东西不会起作用,因为更改是函数的局部变量。我们怎样才能使以下变量传递变量反映在方法调用之外?

public void changeboolean(Boolean b)
{
        if( somecondition )
        {
                b=true;
        }
        else
        {
                b=false;
        }
}

EDIT  代码可能是这样的:

public String changeboolean(Boolean b,int show)
{
        if( somecondition )
        {
                b=true;
                show=1;
                return "verify again";
        }
        else
        {
                b=false;
                show=2;
                return "Logout";
        }
        show=3;
        return verifed;

}

我正在寻找类似的东西

b.setvalue(true);

有可能吗?

2 个答案:

答案 0 :(得分:23)

  

我们可以在java

中修改类函数中的布尔值吗?

不,Boolean是不可变的,就像原始类型的所有包装一样。

选项:

  • 从您的方法中返回boolean(最佳选择)
  • 创建一个可变等效的Boolean,允许您设置嵌入值。然后,您需要修改参数引用的实例中的值 - 更改参数的值以引用不同的实例将无法帮助您,因为参数始终通过Java中的价值。该值可以是原始值,也可以是引用,但它仍然通过值传递。更改参数的值永远不会更改调用者的变量。
  • boolean[]与单个元素一起用作包装类型
  • 使用AtomicBoolean作为包装类型

答案 1 :(得分:1)

布尔值是不可变的,就像基本类型的所有包装器一样。 溶液: 尝试使用apacheCommon的MutableBoolean http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/mutable/MutableBoolean.html