getInstance() 返回的应该是Calendar 的子类。

解决方案 »

  1.   

    Calendar 是一个abstract class ,又怎么可以实例化呢?
    再说,要是Calendar 的子类的话,
    calendar instanceof GregorianCalendar怎么会为真?
      

  2.   

    Calendar是一个abstract Class,但是在程序中并没有进行显式进行实例化,程序只是通过getIntance返回,实际上返回的并不是真正的Calendar对象
    所以并没有问题。
      

  3.   

    getInstance()返回的对象为java.util.GregorianCalendar是Calendar的子类
      

  4.   

    定义一个句柄不代表实例化,察看Calenar源代码就可以看到实例化的是 new GregorianCalendar(zone, aLocale);
    编程时间多了,自然会明白的。
      

  5.   

    to ChDw(米):
    如果
       getInstance()返回的对象为java.util.GregorianCalendar是Calendar的子类。
    那么:
       GregorianCalendar 是由 Calendar 派生出来的,也就是说,在写作 Calendar 时,GregorianCalendar 还没有的。那 Calendar.getInstance() 怎么可以生成得到一个子类来返回呢?
      

  6.   

    to gularess() :谢谢你,可是,同上,在没有子类的情况下,它怎么可以生成一个子类来返回呢?
      

  7.   

    Calendar中的源代码:
        /**
         * Gets a calendar using the default time zone and locale.
         * @return a Calendar.
         */
        public static synchronized Calendar getInstance()
        {
            return new GregorianCalendar();
        }
      

  8.   


    对头,关键是看getInstance方法的实现,如果它返回的就是一个GregorianCalendar,什么问题不都解决了吗?所以你看一个Calendar的源码,看这个方法到底是如何实现的,不就明白了吗?
      

  9.   

    嗯,现在从源码看来,的确是
    return new GregorianCalendar();应该是一个子类但是这样子
    public class GregorianCalendar
    extends Calendar这不是说明了,得先有 Calendar 吗?
    那么它在写 Calendar 的时候,怎么可以找到GregorianCalendar啊???
      

  10.   

    getInstance()
    get a Calendar using the default time zone and locale.
    return a Calendar.