我有以下情况。有两个类 A类和 B类。这两个类都具有以下性质。
static public int a = 10;
static public int b = a-3;
A.a = 5;
// print b here.
如果我在某处出错,请纠正我。谢谢。
答案 0 :(得分:1)
即使它是对象或原始也是不可能的,因为java支持传递值而不是传递参考。
答案 1 :(得分:1)
你做不到。但是,您可以编写一个方法来为两个变量执行此操作:
private static void setValue(int value) {
b = val;
A.a = val;
}
如果你坚持这样做"直接",考虑转向C / C ++:)
答案 2 :(得分:1)
这可能与您想要的行为过于接近。
class IntWrapper {
int inside;
public IntWrapper(int i) {
inside = i;
}
}
class A {
static IntWrapper a = new IntWrapper(10);
static IntWrapper b = a;
}
public class B {
public static void main(String[] args) {
A.a.inside = 5;
System.out.println(A.b.inside);
}
}
答案 3 :(得分:0)
没有。即使static public Integer a = 10;
(参考类型)也不会更改此值,因为您正在更改变量指向的对象。
你可以做的是设置getter和setter,一个la C#属性:
private static int a;
private static int b;
public static int GetA() {return a;}
public static int SetA(int newA) {a = newA; b = newA}
public static int GetB() {return b;}
如果您希望b
只是基于a
的计算,这非常简单:
private static int a;
public static int GetA() {return a;}
public static int SetA(int newA) {a = newA;}
public static int GetB() {return a - 3;}
如果你只想要一个语句来更新两者,你可以用
来完成b = a = 3;
虽然不是那么令人兴奋。
答案 4 :(得分:0)
public class A {
private static int a;
private static int b;
static {
setAB(10);
}
public static int getA() {
return a;
}
public static int getB() {
return b;
}
public static void setAB(int value) {
a = value;
b = value;
}
}
答案 5 :(得分:0)
如果b
是...的函数,为什么不将它声明为静态函数:
class A {
static IntWrapper a = 10;
public static getB(){
return a - 3;
}
}
这样,当a
更改时,它会正确更新
如果您不需要这种行为,将无法设置 b
。