Cha*_*Weg 5 java methods workflow constructor bukkit
这可能只是个人品味和工作流程的问题,但如果不止于此,我觉得无论如何我应该问.
在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();
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用之间的区别是什么
Handler handler = new Handler(this);
Run Code Online (Sandbox Code Playgroud)
和
Handler handler = Handler.init(this);
Run Code Online (Sandbox Code Playgroud)
在Plugin类中,除了createMap()仅在后者中运行的事实,因为它没有在构造函数中调用?
在这种情况下,澄清Plugin被认为是主要类别.
我知道足够的Java语法能够编写中级插件,但对Java本身还不够了解这两种方法之间的区别.
编辑:例如,Maps我用来创建的类Map使用静态工厂方法(我希望我正确使用该术语)使用类而不是对象调用.
静态工厂方法既有优点也有缺点.
好处
缺点
资料来源:Effective Java,Second Ed.
不同的是静态工厂方法更灵活.它可以有各种方式返回实例.它可以做其他方面的事情.它可以有一个更具描述性的名称.它可以通过简单名称(例如foo(args))通过静态导入或继承来调用.
构造函数调用更加确定 - 调用者确切地知道发生了什么 - 创建了该确切类的新实例.