每次FutureContent.future被稱爲爲什麼將新MyFuture類不被創建並分配給未來?靜態對象初始化
FutureContent.future
public class FutureContent {
public static MyFuture future = new MyFuture();
}
每次FutureContent.future被稱爲爲什麼將新MyFuture類不被創建並分配給未來?靜態對象初始化
FutureContent.future
public class FutureContent {
public static MyFuture future = new MyFuture();
}
你不要「打電話」FutureContent.future
,你引用它。
它初始化一次,在類加載時間;沒有必要再次初始化它。這就是static
部分的含義(廣義上)。
字段在他們的聲明中static修飾符被稱爲靜態字段或類變量。他們與班級相關,而不是與任何對象相關聯。該類的每個實例共享一個類變量,它位於內存中的一個固定位置。
正因爲future
是一個靜態字段 - 又名,類變量 - 這意味着初始化只會發生一次。
我寧願說,「正是因爲'future'是*項*」 –
@Kirk:也許是兩者的結合:「正是因爲'future'是一個靜態字段」。 – LukeH
@LukeH沒有,真的沒有。使得例子的場非靜態不改變的事實,訪問該字段不觸發創建像OP新MyFutures認爲它。它只會改變,現在每創建一次對象創建一次,而不是每次加載一次。 –