嗨,我知道Abstract類不能被實例化。但在Java API文檔here中,日曆類是一個Abstract類,並且有一個返回Calendar對象的靜態方法getInstance()
。如果抽象日曆對象無法實例化,那麼該方法如何返回Calendar對象?Abstract Calendar類的getInstance方法如何返回日曆對象
2
A
回答
4
Calendar.getInstance()
根據語言環境返回具體類GregorianCalendar
,BuddhistCalendar
或JapaneseImperialCalendar
之一的實例。每個類都是一個日曆,因爲它們都是抽象的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
每種類型的日曆都有一個單例實例。
Calendar cal = Calendar.getInstance();
0
getInstance()
是一個自定義的方法,如果你看看jdk的來源,它返回GregorianCalendar
(或其他一些實施java.util.Calendar
類的)。
我覺得你困惑自己以爲getInstance()
是Reflection method?
相關問題
- 1. 幫助理解抽象類:java日曆方法getInstance()
- 2. 超類方法返回超類對象
- 3. 返回類型對象的方法
- 4. 如何以自定義日期格式返回日曆對象
- 5. 如何讓Java父類方法返回子類的對象
- 6. 如何返回擴展對象(子類)?其實,如何返回已傳遞給方法的確切對象?
- 7. 如何指定抽象類的方法的返回類型
- 8. 對象 - 以Swift3類返回方法
- 9. createStatement()方法如何返回Statement對象?
- 10. Swift 3.0 - 日曆startOfDay方法返回3am
- 11. 如何識別返回的對象的方法類型?
- 12. Microsoft Graph的Calendar API不會返回週期性日曆事件
- 13. 如何在類方法中返回AFNetworking中的響應對象?
- 14. Junit。如何測試返回類對象的方法
- 15. 方法返回Runnable對象
- 16. 將對象返回方法
- 17. Calendar getInstance get和set not working
- 18. 如何確保對象方法返回預期的對象?
- 19. 爲什麼Calendar()方法在相同日期返回true
- 20. 使用抽象java.text.NumberFormat類的getInstance()方法時,返回值的實際類是什麼?
- 21. getInstance - 類與方法static
- 22. Android日曆Google Calendar日曆示例
- 23. Apache軸:日曆對象中返回的日期錯誤
- 24. 如何從類方法返回自定義Objective-C對象?
- 25. 如何將對象投射到方法返回類型
- 26. 日曆返回
- 27. 如何編寫一個返回抽象類實例的方法?
- 28. 調用方法vs將對象分配給方法AND void返回類型vs對象返回類型
- 29. 如何使用此方法返回日曆
- 30. 如何讓抽象方法返回具體實現的抽象類型?
因此,GregorianCalendar也是Calendar類型,因爲它擴展了GregorianCalendar。對? – 2013-04-27 05:36:02
是的,擴展一個類使它成爲原始類的孩子,所以它是一個GregorianCalendar以及一個Calendar。 http://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html – 2013-04-27 05:36:52
謝謝@Scott現在很清楚我 – 2013-04-27 05:41:20