Abstract Calendar类的getInstance方法如何返回日历对象

时间:2013-04-27 05:28:53

标签: java

嗨,我知道抽象类无法实例化。但是在Java API文档here中,日历类是一个抽象类,并且有一个返回Calendar对象的静态getInstance()方法。如果无法实例化抽象日历对象,那么此方法如何返回Calendar对象?

4 个答案:

答案 0 :(得分:4)

Calendar.getInstance()返回其中一个具体类GregorianCalendarBuddhistCalendarJapaneseImperialCalendar的实例,具体取决于区域设置。每个类都是一个日历,因为它们都扩展了抽象Calendar。就像在这里

abstract class A {
    public static A getInstance() {
          return new B();
    }
}

class B extends A {
}

答案 1 :(得分:2)

它返回一个扩展Calendar的类,在本例中为java.util.GregorianCalendar,可以使用

进行检查
Calendar cal = Calendar.getInstance();
System.out.println(cal.getClass());

子类可以存储在父类的变量中,即使父类不能直接实例化也是如此。

答案 2 :(得分:0)

每种类型的日历都有一个单例实例。

Calendar cal = Calendar.getInstance();

答案 3 :(得分:0)

getInstance()是一种自定义方法,如果您查看jdk源代码,它将返回GregorianCalendar(或java.util.Calendar类的其他实现)。

我认为您认为getInstance()Reflection method

让您感到困惑