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