0

这个问题对于一些 Java 专家来说可能是错误的。但我想知道为什么我们在像 main 这样的静态方法中创建对象,而不是在静态块中。我知道如果我们在静态块中实例化并且当然如果我们不进一步使用它,它将不必要地创建对象。这种方法还有其他需要注意的地方吗?我们可以将其与单例模式联系起来吗?

例如:

public class MyClass {

    static {
        AnotherClass object = new AnotherClass();
            // Do Some operations here with object.
    }
}
4

1 回答 1

0

主要原因是控制它何时实际执行。静态块中的内容将在第一次加载类时执行,并且很容易意外地导致类被加载(例如通过引用类上的常量)。

拥有静态方法意味着您可以完全控制何时调用该方法(因为您必须显式调用它)。

关于单例,热加载单例的 java 习惯用法将实例初始化为静态字段。这将基本上与静态块一样运行。

public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}
于 2012-06-06T17:47:47.823 回答