【发布时间】:2015-11-19 14:43:33
【问题描述】:
我有一个只有静态成员的类,设计如下:
public class Clazz {
public static final Foo foo = FooFactory.createFoo();
private static Bar bar;
public static void prepare() {
bar = new Bar(foo);
}
}
当调用 Clazz.prepare() 时,我可以看到 foo 在 bar 初始化时为空。据我所知,静态初始化程序应该在调用类的任何静态方法之前调用。因此, foo 在调用 prepare() 时应该已经被初始化。 我错过了什么吗?
【问题讨论】:
-
FooFactory.createFoo()是做什么的? -
FooFactory.createFoo()必须返回null值 -
基本上,它确实返回 new Foo();
-
@basme 基本上不够好,class initialisation can be tricky。您能否发布一个显示奇怪行为的完整代码示例?
-
请添加
Bar类和FooFactory类的代码
标签: java static static-methods static-members jls