小编典典

Java:通过构造函数和静态方法初始化之间的区别?

java

这可能只是个人喜好和工作流程的问题,但如果不止于此,我还是应该问一下。

在Java中,通过构造函数和通过静态方法(返回实例)创建实例之间有什么区别?例如,从我正在处理的项目中获取以下代码(在发布时手工编写,因此采用了一些快捷方式和自由):

Plugin main;
Map<int, int> map;

public Handler(Plugin main) {
    this.main = main;
}

public static Handler init(Plugin main) {
    Handler handler = new Handler(main);
    handler.createMap();
}

public void createMap() {
    this.map = Maps.newHashMap();
}

在这种情况下,使用之间会有什么区别

Handler handler = new Handler(this);

Handler handler = Handler.init(this);

除了在插件类中createMap()运行,因为它没有在构造函数中调用,所以只能在后者中运行?

在这种情况下,要澄清的Plugin是主要类别。

我了解足够的Java语法来编写中间级别的插件,但是对Java本身了解的不够,无法知道这两种方式之间的区别。

编辑:例如,Maps我用来创建的类Map使用一个静态工厂方法(我希望我正确地使用了该术语)被称为使用该类而不是对象。


阅读 216

收藏
2020-11-19

共1个答案

小编典典

区别在于静态工厂方法更灵活。它可以通过各种方式返回实例。它可以做其他方面的事情。它可以具有更具描述性的名称。可以foo(args)通过静态导入或继承以其简单名称(例如)调用它。

构造函数调用更加确定-调用者确切地知道发生了什么-创建了该确切类的新实例。

2020-11-19