为了账号安全,请及时绑定邮箱和手机立即绑定

java中的Calendar的getInstance()为什么可以返回Calendar对象

java中的Calendar的getInstance()为什么可以返回Calendar对象

泛舟湖上清波郎朗 2019-03-22 19:15:01
Calendar 类是一个抽象类,抽象类是不能实例化对象的。可是我在看API的时候看到这样的描述:“Calendar 提供了一个类方法 getInstance,以获得此类型的一个通用的对象。Calendar 的 getInstance 方法返回一个 Calendar 对象,其日历字段已由当前日期和时间初始化: Calendar rightNow = Calendar.getInstance();”我对这个很不解,为什么这个抽象类Calendar 可以通过getInstance()返回Calendar 对象。希望各位大神给出指点。十分感谢!!!Calendar rightNow = Calendar.getInstance()
查看完整描述

1 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

首先,抽象类可以有具体的实现方法。

其次,看下源码:


if ("th".equals(aLocale.getLanguage())

        && ("TH".equals(aLocale.getCountry()))) {

        return new sun.util.BuddhistCalendar(zone, aLocale);

    } else if ("JP".equals(aLocale.getVariant())

           && "JP".equals(aLocale.getCountry())

           && "ja".equals(aLocale.getLanguage())) {

        return new JapaneseImperialCalendar(zone, aLocale);

    }        


    // else create the default calendar

        return new GregorianCalendar(zone, aLocale);

该方法内部最终返回的是具体的实现类,也就是子类,而不是你所理解的Calendar本身实例化的类。


查看完整回答
反对 回复 2019-04-25
  • 1 回答
  • 0 关注
  • 1892 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信