2011-07-11 30 views
-2

我是一名大學生。在java中開發一個簡單的工具類(如Date類)

在我們學院裏,我們必須開發一個類似java.util包中的簡單Date類。

如果我們這樣做,那麼什麼是我們可以在類中實現的方法, 由於大多數的方法原始Date類已被棄用。

我在java/util/Date.java中看到了原始的Date類定義。作爲java的初學者,我無法理解Serializable,Cloneable,Comparable以及像fasttime這樣的許多變量的概念。

這將是很好的,如果我們可以簡單地實現這個日期類(因爲我們在實驗室在3個小時來開發這個代碼作爲測試用。)

是否有必要以實現一個簡單的那些概念日期類。

如果我將它作爲項目並開始開發整個Date實用程序,那麼該代碼將運行到許多頁面 ,我無法在3小時內完成實驗室會話。

所以有人請指導我....

我心存疑慮....

  1. 是否有可能創建一個類似於日期類與簡單的實現一個工具類。
  2. 如果我們這樣做,那麼我們可以在那個類中實現什麼方法,因爲大多數有用的方法在原始日期類中已被棄用。

在此先感謝。

+2

您是否在*考試期間向SO發佈求助信息? –

+1

我不知道爲什麼這是沒有解釋得到這麼多downvotes,這在我看來是一個有效的問題。 – Grammin

+0

我相信你的實驗室TA可以對你有所幫助。 –

回答

0

你不必實現所有的接口,以便有一個簡單的工作Date類。

我建議你忘記Java的Date類,並考慮你認爲日期類需要什麼。例如:一個月

  • 獲取的

    • 的get/set天/臺月
    • 獲取/設置年
    • 獲取星期
    • toString()

    會給你一個相當不錯的基礎日期班。 爲了完整起見,我會告訴你接口的用途。你可以決定是否實施這些基於你學到了多少和分配的要求:

    • Serializable是用於保存對象到流。你實際上不需要做太多的工作來實現它。
    • Comparable用於比較對象(date1.compareTo(date2)應返回一個整數,指示date1是在date2之前,之後還是相同)。
    • Clonable用於創建對象的深層副本。
  • +0

    你能告訴我它如何推遲原始日期類 –

    +1

    首先,原來的'日期'類正在存儲一個日期和一個時間(上面提到的建議函數僅用於日期部分)。其次,在Date類中不贊成使用的所有方法都被棄用,因爲該功能是由不同的類('Calendar')執行的。這取決於你需要什麼功能。如果你不知道你應該問教授。 – trutheality

    6
    1. Serializable表示該類可以序列化爲可移植的二進制形式。
    2. Clonable意味着類可以被克隆,這是非常棘手的,主要是因爲繼承和可變性問題。
    3. Comparable表示該類支持將比較爲其他相同類型的類。

    這些Comparable是唯一一個需要任何代碼的功能,它也可能是唯一一個在你的情況下任何使用。

    Serializable就是所謂的Marker Interface它不需要任何代碼來引起任何事情發生,因爲它沒有任何方法來實現。它只存在於標記的對象作爲支持的東西和另一個類,並檢查此接口,並根據它的存在做事情。

    Cloneable是你想要遠離的東西,如果可能的話。在Java中克隆對象不是直截了當的,有許多問題,並且通常以可以想象的最不直觀的方式行事。如果你真的想了解這一點,請了解這一點,read this article

    Comparable是非常有價值的,它可以讓你比較類似的對象,看看是否小於,等於或大於另一個。這是對排序和支持Comparators的Collections類的要求。 Comparators可以被認爲是獨立的Comparable實現,可以插入其他類以控制對象的比較方式。

    java.util.Date是一個棘手的類,它似乎是一個直接的結構類型類,帶有一些增變器和便捷方法,但日曆數據的底層問題域並不那麼簡單。日曆數學有很多例外例。這就是爲什麼在java.util.Date上有這麼多方法被棄用,他們在很多情況下產生了錯誤的行爲。

    對於一些更多的代碼來研究,看看這個temporal package我開發包裝標準的Java Calendar非常基本的DateTimeTimeStamp類,他們都只是委託的Calendar爲實際calcuations一個實例。

    注意:這個庫代碼爲JodaTime提供了可能會抱怨的不使用該庫的JodaTime。

    +1

    +1正確的答案和#2(它的確是) – RMT

    0

    由於這是一個實驗項目,爲什麼不列出Date類需要和應該具有的「簡單」函數的功能。例如,toString() - 返回Data或toMilliSecond()的字符串表示形式 - 返回參考時間的毫秒數。

    相關問題