嗨我知道抽象类不能被实例化。但是在这里的Java API 文档中,日历类是一个抽象类,并且有一个getInstance()
返回日历对象的静态方法。如果抽象日历对象不能被实例化,那么这个方法如何返回一个日历对象呢?
问问题
946 次
4 回答
4
Calendar.getInstance()
返回具体类之一的实例GregorianCalendar
,BuddhistCalendar
或JapaneseImperialCalendar
取决于语言环境。这些类中的每一个都是一个 Calendar 因为它们都扩展了 abstract Calendar
。就像这里
abstract class A {
public static A getInstance() {
return new B();
}
}
class B extends A {
}
于 2013-04-27T05:34:03.340 回答
2
它返回一个扩展 Calendar 的类,在本例中为 java.util.GregorianCalendar,可以使用
Calendar cal = Calendar.getInstance();
System.out.println(cal.getClass());
子类可以存储在父类的变量中,即使父类不能直接实例化。
于 2013-04-27T05:31:54.010 回答
0
每种类型的日历都有一个单例实例。
Calendar cal = Calendar.getInstance();
于 2013-04-27T05:32:50.617 回答
0
getInstance()
是一个自定义方法,如果您查看 jdk 源代码,它正在返回GregorianCalendar
(或其他java.util.Calendar
类的实现)。
我想你把自己弄糊涂了,以为那getInstance()
是反射法?
于 2013-04-27T05:33:46.680 回答