new Calendar()
与Calendar.getInstance()
有什么区别吗?
问题就像它一样简单...........由于系统拒绝发布,我只是在这里复制一些废话。
private static Calendar calendar = Calendar.getInstance();
public static int getCalendar(long time, int calendarConst) {
calendar.setTimeInMillis(time);
return calendar.get(calendarConst);
}
答案 0 :(得分:5)
我认为答案很简单Calendar是一个抽象类,所以我们无法创建它的实例。现在,当您致电Calendar.getInstance
时,会创建GregorianCalendar
个实例。
答案 1 :(得分:2)
详细介绍了Effective Java第二版中构造函数和静态工厂方法之间的区别,非常值得一读。
这里的主要区别在于两者的回归:
后一种情况正是Calendar.getInstance()
的作用:你显然没有找回Calendar
本身的实例,因为它是抽象的,但你可能得到GregorianCalendar
, JapaneseImperialCalendar
等。
这将Calendar
的实现与客户端代码分离:您可以对Calendar
进行更改,而无需客户端进行更改。
答案 2 :(得分:-1)
执行new Calendar()
时,它会从默认的Calendar实例创建新的日历实例。有时通过构造函数创建实例不如从Factory方法创建。这就是它使用Factory方法创建实例的原因。
而且,
Calendar.getInstance()
是一种原生方法,记下本机方法没有正文/实现。他们已经从系统实现了。
它在这里写道:https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html。
并且,正如上面的答案已经解释的那样,日历实例是通过调用Calendar类创建的。静态工厂设计模式,用于创建日历实例。