2009-10-12 37 views
4

所有其他的mutators在JDK 1.1中都棄用了,爲什麼setTime()保持原樣?當然java.util.Calendar - 操縱日期的正確方法 - 可以根據需要使用java.util.Date(long)構造函數創建java.util.Date的新實例?爲什麼java.util.Date的setTime()方法不被棄用?

+0

我真的很希望該日期是不可改變的。 – 2009-10-12 21:45:19

+0

你不必使用它,你知道。有更好的選擇。 – skaffman 2009-10-12 21:50:32

+1

@skaffman。如果您正在使用java.sql。*,則不會。當然,將java.sql.Timestamp作爲java.util.Date的一個子類是另一個可怕的錯誤。 – 2009-10-12 22:38:51

回答

6

已棄用的Date的位是與日曆(即日,月,年等)相關的那些位。您會注意到日曆字段的訪問器方法也被棄用,而不僅僅是增變器。

但是,表示法是一個毫秒值,但仍然是Date的工作方式,並且與日曆表示無關,因此它保持不推薦。

2

因爲setTime方法是至少在邏輯上正確的:在setX方法,這需要天,個月等毫無意義:一個ja​​va Date在時間的瞬間,因此天,小時等只涉及Date在特定TimeZone中的觀點。

4

其他的增變器試圖使用java.util.Date作爲日曆,而不是一個即時的時間,自1970年1月1日上午12點UTC開始包裝數毫秒。因此,對於那個不應該被棄用的增變器是有意義的。

Date/Calendar的API仍然是可怕的,當然,你仍然應該使用Joda Time儘可能 - 但我能看到爲什麼呼叫不會被棄用。在事實之後,你不能創建一個不可變的類型,而這並不是貶抑的一點 - 關鍵是試圖阻止人們將它用作「1976年6月19日」的存儲空間等。

相關問題