2011-11-23 226 views
2

每次FutureContent.future被稱爲爲什麼將新MyFuture類不被創建並分配給未來?靜態對象初始化

FutureContent.future 

public class FutureContent { 

     public static MyFuture future = new MyFuture(); 

} 

回答

4

你不要「打電話」FutureContent.future,你引用它。

它初始化一次,在類加載時間;沒有必要再次初始化它。這就是static部分的含義(廣義上)。

1

字段在他們的聲明中static修飾符被稱爲靜態字段或類變量。他們與班級相關,而不是與任何對象相關聯。該類的每個實例共享一個類變量,它位於內存中的一個固定位置。

Understanding Instance and Class Members

1

正因爲future是一個靜態字段 - 又名,類變量 - 這意味着初始化只會發生一次。

+1

我寧願說,「正是因爲'future'是*項*」 –

+0

@Kirk:也許是兩者的結合:「正是因爲'future'是一個靜態字段」。 – LukeH

+0

@LukeH沒有,真的沒有。使得例子的場非靜態不改變的事實,訪問該字段不觸發創建像OP新MyFutures認爲它。它只會改變,現在每創建一次對象創建一次,而不是每次加載一次。 –