2017-01-26 43 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; 
} 
相關問題