2017-01-26 11 views
1

Я знаю, что на 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 и C# боте можно, как в плохом шаблон –

ответ

0

В Java это

private static A a; 

называется полем класса, он имеет то же значение, или в данном случае указывает на тот же объект в каждом случае этого класса. Также к нему можно получить доступ без созданного экземпляра класса, в этом случае 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; 
}