我知道在C#中这可以,但在Java中呢?我已经测试了它并且它可以工作但应该避免,如果是,为什么?
public class A {
public A() {
B.set(this);
}
}
public final class B {
private static A a;
public static void set(A a) {
this.a = a;
}
public static A get() {
return a;
}
private B() {
}
}
答案 0 :(得分:0)
在Java中
private static A a;
被称为Class字段,它具有相同的值,或者在这种情况下指向此类的每个实例中的同一对象。此外,它可以在没有创建类的实例的情况下访问,在本例中为B.get()。你可以改变这个
public static void set(A a) {
this.a = a;
}
public static A get() {
return a;
}
到这个
public static void set(A a) {
B.a = a;
}
public static A get() {
return B.a;
}