当前位置: 技术问答>java相关
关于 Calendar
来源: 互联网 发布时间:2015-04-19
本文导语: 先看看下面的这段代码,我是从DW上抄来的: import java.io.*; import java.util.*; public class WhatIsCalendar { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); if (calendar ins...
先看看下面的这段代码,我是从DW上抄来的:
import java.io.*;
import java.util.*;
public class WhatIsCalendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
if (calendar instanceof GregorianCalendar)
System.out.println("It is an instance of GregorianCalendar");
}
}
编译运行通过。
可是小弟就是不明白:
GregorianCalendar 是由 Calendar 派生出来的,也就是说,在写作 Calendar 时,GregorianCalendar 还没有的。那 Calendar.getInstance() 怎么可以生成得到一个子类来返回呢?
如果 Calendar.getInstance() 返回的只是一个 Calendar ,那么 Calendar 是一个abstract class ,又怎么可以实例化呢?
import java.io.*;
import java.util.*;
public class WhatIsCalendar {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
if (calendar instanceof GregorianCalendar)
System.out.println("It is an instance of GregorianCalendar");
}
}
编译运行通过。
可是小弟就是不明白:
GregorianCalendar 是由 Calendar 派生出来的,也就是说,在写作 Calendar 时,GregorianCalendar 还没有的。那 Calendar.getInstance() 怎么可以生成得到一个子类来返回呢?
如果 Calendar.getInstance() 返回的只是一个 Calendar ,那么 Calendar 是一个abstract class ,又怎么可以实例化呢?
|
Calendar中的源代码:
/**
* Gets a calendar using the default time zone and locale.
* @return a Calendar.
*/
public static synchronized Calendar getInstance()
{
return new GregorianCalendar();
}
/**
* Gets a calendar using the default time zone and locale.
* @return a Calendar.
*/
public static synchronized Calendar getInstance()
{
return new GregorianCalendar();
}
|
getInstance() 返回的应该是Calendar 的子类。
|
Calendar是一个abstract Class,但是在程序中并没有进行显式进行实例化,程序只是通过getIntance返回,实际上返回的并不是真正的Calendar对象
所以并没有问题。
所以并没有问题。
|
getInstance()返回的对象为java.util.GregorianCalendar是Calendar的子类
|
定义一个句柄不代表实例化,察看Calenar源代码就可以看到实例化的是 new GregorianCalendar(zone, aLocale);
编程时间多了,自然会明白的。
编程时间多了,自然会明白的。
|
对头,关键是看getInstance方法的实现,如果它返回的就是一个GregorianCalendar,什么问题不都解决了吗?
所以你看一个Calendar的源码,看这个方法到底是如何实现的,不就明白了吗?
|
先看书(OO),再问
|
类里使用自己或者子类都没有问题啊。
写过链表吗?
写过链表吗?
|
getInstance()
get a Calendar using the default time zone and locale.
return a Calendar.
get a Calendar using the default time zone and locale.
return a Calendar.
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。