【发布时间】:2019-09-16 15:14:18
【问题描述】:
这两个定义有什么区别?
public class MainClass {
//definition one
private static MainClass main = new MainClass();
//definition two
private static MainClass main2 = MainClass.getMain2();
public static void main(String[] args) {
}
private static MainClass getMain2() {
return main2;
}
}
哪个更好?
【问题讨论】:
-
您明白,如果您不使用
new关键字,您就不会创建对象,对吧?所以将main2初始化为自身只会将其保留为null? -
除了那个非描述性的标题(请阅读How to Ask)之外,
main的初始化更好。为什么?因为main2不会做你所期望的......(试试吧)。 -
看起来你在创建类的实例和从单例或类似的东西中获取实例之间感到困惑。 main() 方法也无关紧要,这只是您的入口点。你的意思是写一个默认的构造函数?
-
第一个是创建(并分配)一个新实例;第二个只是分配方法返回的内容(在这种情况下,分配给的字段,所以它实际上是一个无操作)