2014-01-23 19 views
1

我想要從instanceof a Calendar得到一個GregorianCalendar對象。顯然,我只能投下Calendar這個對象,因爲在大多數情況下,摘要Calendar的實際執行是GregorianCalendar。但是如果我不知道什麼是真正的實現,我想強制創建另一個CalendarGregorianCalendar版本?我能怎麼做?從Calendar到GregorianCalendar而不投擲

我找了很多搜索引擎,但我什麼也沒找到。

回答

0

您不應該這樣做,因爲GregorianCalendar擴展了Calendar。 我認爲,唯一的辦法就是投它,但之前檢查實例:

if (cal instanceof GregorianCalendar) { 
    GregorianCalendar gregorianCalendar = (GregorianCalendar) cal; 
    ... 
} 
+0

如果不是?我不知道如何處理else語句,那麼我已經知道它只是一個表演。 Njol說我應該在施工後設置一些東西,但我不知道setTime和setTimeZone是否足夠。 – user2714602

+0

我不認爲這是全部。查看日曆代碼。它有很多領域,比如'minimalDaysInFirstWeek','firstDayOfWeek','sharedZone','zone'和'time'。我相信你應該考慮通過修改文檔來設置所有這些。 –

0

簡單:

new GregorianCalendar() 

如果你已經有了,你要複製你應該添加適當的參數日曆實例從您現有的日曆(例如時區)和/或建造後的日期(例如日期)。

+0

正如我對Pisek所說的,僅僅調用setTime和setTimeZone就足夠了? – user2714602

+0

@ user2714602 Calendar.getInstance()設置時區,區域設置,新創建的日曆的時間戳。所以,如果你不修改其他任何東西,只設置這些值應該沒問題。 – Njol