2013-04-27 39 views

回答

4

Calendar.getInstance()根據語言環境返回具體類GregorianCalendarBuddhistCalendarJapaneseImperialCalendar之一的實例。每個類都是一個日曆,因爲它們都是抽象的Calendar。就像這裏

abstract class A { 
    public static A getInstance() { 
      return new B(); 
    } 
} 

class B extends A { 
} 
2

它返回一個類延伸日曆,在這種情況下java.util.GregorianCalendar中,其可以與

Calendar cal = Calendar.getInstance(); 
System.out.println(cal.getClass()); 

一個子類被檢查可以存儲在父類的變量內,即使父類不能直接實例化。

+0

因此,GregorianCalendar也是Calendar類型,因爲它擴展了GregorianCalendar。對? – 2013-04-27 05:36:02

+0

是的,擴展一個類使它成爲原始類的孩子,所以它是一個GregorianCalendar以及一個Calendar。 http://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html – 2013-04-27 05:36:52

+0

謝謝@Scott現在很清楚我 – 2013-04-27 05:41:20

0

每種類型的日曆都有一個單例實例。

Calendar cal = Calendar.getInstance(); 
0

getInstance()是一個自定義的方法,如果你看看jdk的來源,它返回GregorianCalendar(或其他一些實施java.util.Calendar類的)。

我覺得你困惑自己以爲getInstance()Reflection method