我應該專門用它來代替舊的類嗎?
不,不需要排除舊類。舊的java.util.Date/.Calendar工作原理相同,不變。已棄用而不是。
您可以混合和匹配所有三個框架(舊類,Joda-Time和java.time)。只要注意一些相同或相似的類名 - 請留意你的import
聲明!
請參閱教程,Legacy Date-Time Code。
另外,ThreeTen-Extra項目還擴展了java.time和附加功能。 「ThreeTen」是指定義java.time的JSR 310。
我應該更換舊類的現有用法嗎?無論我發現它們是因爲新東西好多了嗎?
如果舊代碼按預期工作,則無需現在更改。
如果您擔心舊代碼可能無法正確處理時區,或者想要執行更多本地化,則可能需要使用java.time重做它們。即使如此,請記住,您可以輕鬆地在j.u.Date和Instant之間進行轉換。因此,您可以使用j.u.Date/.Calendar原樣保留業務邏輯,只更改用戶表示代碼以使用java.time。
我是否應該避免使用java.util.Calendar,java.util.Date,java.sql.Date和java.text.DateFormat來支持新的API,或者是否存在使用舊的班還是比較好的?
您將需要舊的類與舊代碼和庫,期望舊類型的互操作。再次,舊的類不會被棄用,也不會消失。考慮到它們的廣泛使用和Java團隊的首要任務是保持向後兼容性,他們可能永遠不會離開。
新的java.time類是遠遠優越,這就是爲什麼他們被添加。而且它們更合乎邏輯,更易於使用。所以是的,學習如何使用它們會是有益的和愉快的。但並不緊急。在緊縮時刻,按照習慣的方式編寫代碼。當你有時間學習(Tutorial)並執行額外的測試時,開始使用新的類。
新手程序員應該把重點放在java.time上。
由於新的Date API類似於用Java 8 stream API替換Guava FluentIterable,Joda Time API已經過時了嗎?
Joda-Time是java.time的靈感。同樣的人發明了這兩個。他們打算讓java.time成爲他們對Joda-Time的「2.0」重新發明,如果他們知道他們現在知道什麼,他們會怎麼做。他們說Joda-Time用戶應該轉換到java.time。
這就是說,喬達時間不會消失。它仍然在努力,仍然更新錯誤修復和新的時區數據tz
。它是很重要的大型Android社區沒有其他體面的日期時間庫(我知道)。所以你可以繼續依靠Joda-Time,沒有迫切需要撕掉舊代碼,但期望沒有新功能或增強功能。
喬達時代已經磨合並被證明,而java.time已經有了一些小錯誤和糾結。 Joda-Time和java.time每個都有另一個缺乏的功能。所以,我個人而言,我混合搭配最合適。在涉及java.time的時候,我依靠Joda-Time。
規劃一個最終轉換到java.time,但沒有急於,沒有恐慌。
您是否正在使用現有的代碼庫 - 尤其是沒有良好測試的代碼庫 - 哪裏出現重要的重構會帶來風險? –
我正在使用現有的代碼庫(沒有很好的測試覆蓋率)以及新項目。 –