黑马程序员技术交流社区

标题: 关于Calendar通过方法调用创建对象的疑惑 [打印本页]

作者: Mydream524    时间: 2015-1-1 11:43
标题: 关于Calendar通过方法调用创建对象的疑惑
import java.util.Calendar;

Calendar c = Calendar.getInstance();  

  1. public static Calendar getInstance(TimeZone zone,
  2.                                        Locale aLocale)
  3.     {
  4.         return createCalendar(zone, aLocale);
  5.     }

  6.     private static Calendar createCalendar(TimeZone zone,
  7.                                            Locale aLocale)
  8.     {
  9.         Calendar cal = null;

  10.         String caltype = aLocale.getUnicodeLocaleType("ca");
  11.         if (caltype == null) {
  12.             // Calendar type is not specified.
  13.             // If the specified locale is a Thai locale,
  14.             // returns a BuddhistCalendar instance.
  15.             if ("th".equals(aLocale.getLanguage())
  16.                     && ("TH".equals(aLocale.getCountry()))) {
  17.                 cal = new BuddhistCalendar(zone, aLocale);
  18.             } else {
  19.                 cal = new GregorianCalendar(zone, aLocale);
  20.             }
  21.         } else if (caltype.equals("japanese")) {
  22.             cal = new JapaneseImperialCalendar(zone, aLocale);
  23.         } else if (caltype.equals("buddhist")) {
  24.             cal = new BuddhistCalendar(zone, aLocale);
  25.         } else {
  26.             // Unsupported calendar type.
  27.             // Use Gregorian calendar as a fallback.
  28.             cal = new GregorianCalendar(zone, aLocale);
  29.         }

  30.         return cal;
  31.     }
复制代码
我们在使用Calendar的时候导入了,java.util.Calendar;这个类  但是没有导入java.util.GregorianCalendar;这个类, 但是我们可以创建它的对象。
没有子类的类,我们可以创建它的对象么。
这时为什么呢,还是说,我们导入java.util.Calendar;  这个下面就包括了java.util.GregorianCalendar;

希望坛友能够给予解惑。



作者: 常强儿    时间: 2015-1-1 23:11
你确认没有引入这个类就直接使用了???粘的这些代码体现不出来啊
作者: jacoblx    时间: 2015-1-2 05:02
本帖最后由 jacoblx 于 2015-1-2 05:04 编辑

就在你粘的这段代码的class文件是属于java.util包里的,调用同包下的GregorianCalendar不用导包
你自己的类是通过Calendar的工厂方法来创建GregorianCalendar对象的,也就是说通过Calendar的方法,这个方法是在java.util.Calendar中定义的,而Calendar中使用GregorianCalendar不需要导包(因为在同一个包下)。


如果你需要直接new GregorianCalendar对象,则必须导入GregorianCalendar包。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2