我有一些像这样的代码
JTextArea
这是Java中单例模式的一个饥饿实现,我们知道实例是在调用getInstance之前创建的。
我们也知道在实例化类MySingleton时将实例化静态成员。只有在上面的代码中调用了getInstance时,才会实例化MySingleton类。因此,在调用getInstance之后创建了实例。
哪一个是对的?
为什么?
问题不重复。
它没有讨论静态类初始化何时发生,但是对单例模式的饥饿实现有些怀疑。
在这种情况下,在第一次调用getInstance之前,几乎肯定不会初始化此问题中发布的类。
答案 0 :(得分:0)
第二个语句为false,静态成员在加载它们所在的类时被初始化,而不是在创建该类的第一个实例时。
很容易显示,因为您不需要类的实例来访问其静态成员 即 MyClass.intVar = 5工作正常。 您不需要首先实例化MyClass。