2011-11-23 199 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认为它。它只会改变,现在每创建一次对象创建一次,而不是每次加载一次。 –