15

我们可以在 java 中的类函数中修改布尔值吗,这样的事情不会起作用,因为更改是本地函数。我们如何才能使以下更改传递的变量反映在方法调用之外?

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

编辑代码可能是这样的:

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);

是否可以?

4

2 回答 2

28

我们可以在java中修改类函数中的布尔值吗

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

选项:

  • 从您的方法中返回 a boolean(最佳选择)
  • 创建一个可变的等效项Boolean,允许您设置嵌入的值。然后,您需要修改参数引用的实例中的值 - 将参数的值更改为引用不同的实例对您没有帮助,因为在 Java 中参数始终按值传递。该值要么是原始值,要么是引用,但它仍然是按值传递的。改变参数的值永远不会改变调用者的变量。
  • 使用boolean[]带有单个元素的 a 作为包装类型
  • 用作AtomicBoolean包装器类型
于 2012-04-15T12:26:56.217 回答
1

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

于 2014-04-01T10:06:05.373 回答