静态初始化程序没有赋值意味着什么?

时间:2014-12-14 14:52:41

标签: java static initialization

我看到了post

  

静态初始化程序。它用于提供非平凡的初始化   对于类的静态变量

然后我看到了这段代码:

public class CommandFactory {
    private CommandFactory() {
    }

    static {
        new CommandFactory();
    }

它的目的是什么? (因为没有任何领域的任务)

3 个答案:

答案 0 :(得分:3)

作者的意图可能是为其构造函数side-effects实例化CommandFactory

答案 1 :(得分:2)

这段代码没有多大意义。它使用空构造函数创建实例,因此没有副作用。并且对创建的实例的引用不会存储在任何地方,因此您甚至无法在以后访问它。

这可能是一个简化的例子,旨在解释一些原则,但在目前的形式中,它是无用的。

答案 2 :(得分:0)

在上下文中,除了喂垃圾收集器外,这个片段没有任何意义 但是关于名称CommandFactory和私人ctor,它似乎是一个不完整的 单例示例,应该看起来如此:

public class CommandFactory {
    private static CommandFactory instance;

    private CommandFactory() {
    }

    static {
        instance = new CommandFactory();
    }

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

左右:

public class CommandFactory {
    private static CommandFactory instance = new CommandFactory();

    private CommandFactory() {
    }
    //...
}