在Java中用静态块创建对象的优点和缺点是什么?

在Java中用静态块创建对象的优点和缺点是什么?,java,singleton,instantiation,static-block,Java,Singleton,Instantiation,Static Block,对于一些Java专家来说,这个问题可能是个错误。但是我想知道为什么我们用静态方法创建对象,比如main,而不是staticblock。 我理解,如果我们在静态块中实例化,当然如果我们不进一步使用它,它将不必要地创建对象。这种方法还有其他需要注意的事项吗?我们能把这和单例模式联系起来吗 例如: public class MyClass { static { AnotherClass object = new AnotherClass(); // D

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

例如:

public class MyClass {

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

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

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

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

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

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}

静态方法中的对象,如main,但不在静态块中:你是什么意思?任何代码示例?尽可能多地限制变量的范围是良好的一般实践。如果你只打算在一个方法中使用一个变量,你应该试着把它的作用域限制在这个方法中。我可以在我的静态方法上加一个名称,表明它的用途,但在静态块中我不能这样做。