让我们说我有一个静态方法的公共类,其中一个例如:
public static void test(boolean b){
b = !b;
}
让我们说这个班级名是Test。从另一个类,我有一个变量boolean a = false,我调用
Test.test(a);
如何永久更改它,而不仅仅是在静态方法范围内更改?
答案 0 :(得分:2)
使更改永久化的唯一方法是让方法具有返回值并将其分配给变量:
public static boolean test(boolean b){
return !b;
}
a = Test.test(a);
答案 1 :(得分:0)
使用静态字段:
public static boolean flag;
public static void test(boolean b){
flag = !b;
}
然后:
boolean a = true;
Test.test(a);
System.out.println( Test.flag); // false
答案 2 :(得分:0)
在您的Test
课程中,您可以将布尔变量定义为 static
public static boolean a;
并在课外使用Test.a=false;
或a=Test.a
如果您需要使用方法,可以使用继承隐藏静态方法:
public class HideStatic {
public static void main(String...args){
BaseA base = new ChildB();
base.someMethod();
}
}
class BaseA {
public static void someMethod(){
System.out.println("Parent method");
}
}
class ChildB extends BaseA{
public void someMethod(){
System.out.println("Child method");
}
}
答案 3 :(得分:0)
您可以将实例传递给方法并使用setter一次更改更多变量。
public static void updateData(MyClass instance) {
instance.setX(1);
instance.setY(2);
}
答案 4 :(得分:0)
我认为你要求call by reference。您可以使用数组在Java中获取它:
public static void test(boolean[] b){
b[0] = !b[0];
}
boolean[] param = new boolean[] {a};
test(param);
a=param[0];
//a changed
这很有效,但很难看。如果您需要返回多个值,请查看the Pair or Tuple结构。
答案 5 :(得分:0)
听起来像是在寻找 Mutable Boolean
,其中最简单的是AtomicBoolean。
private void changeIt(AtomicBoolean b) {
b.set(!b.get());
}
public void test() {
AtomicBoolean b = new AtomicBoolean(false);
changeIt(b);
System.out.println(b);
}