我是一名大学生。
在我们的大学里,我们必须用Java开发一个简单的Date类,类似于java.util包中提供的类。
如果我们这样做,那么我们可以在该类中实现哪些方法, 由于大多数方法在原始Date类中已弃用。
我在java / util / Date.java中看到了原始的Date类定义。作为java的初学者,我无法理解Serializable,Cloneable,Comparable和许多变量(如fasttime)的概念。
如果我们能够简单地实现这个日期类,那就太好了(因为我们必须在实验室中用3小时开发这个代码作为测试。)
是否有必要在简单的Date类中实现这些概念。
如果我将其作为项目并开始开发整个Date实用程序, 然后该代码将运行到许多页面 我的实验室课程还有3个小时无法完成。
所以有人请指导我......
我怀疑......
提前致谢。
答案 0 :(得分:6)
其中Comparable
是唯一需要任何代码才能运行的代码,它也可能是您方案中唯一使用的代码。
Serializable
是所谓的Marker Interface
,它不需要任何代码来导致任何事情发生,因为它没有任何方法可以实现。只是存在标记对象作为支持某个东西和另一个类并检查该接口并根据其存在来做事。
Cloneable
是你想要远离的东西。在Java中克隆对象并不简单,有很多陷阱,并且通常以可以想象的非直观方式运行。如果您真的想了解这一点,请了解详情read this article。
Comparable
非常有价值,它可以让你比较相似的对象,看看是否小于,等于或大于另一个。这是排序和支持Comparators的集合类的要求。 Comparators
可以被认为是Comparable
的独立实现,可以插入其他类来控制对象的比较方式。
java.util.Date
是一个棘手的类,它似乎是一个直接的结构类型类,带有一些mutators和便捷方法,但日历数据的底层问题域并不那么简单。日历数学有很多例外案例。这就是为什么java.util.Date
上有很多方法被弃用的原因,在很多情况下它们会产生错误的行为。
要学习更多代码,请查看我开发的temporal package,以使标准Java Calendar
包含非常基本的Date,Time和TimeStamp类,它们都只是委托给Calendar
的实例进行实际计算。
注意: 此库代码为那些可能会抱怨不使用该库的人提前为JodaTime提供日期。
答案 1 :(得分:0)
由于这是一个实验室项目,为什么不列出“简单”Date类需要和应该具有的功能类型。例如,toString() - 返回Data的字符串表示形式或toMilliSecond() - 返回参考时间内的milliSecond数。
答案 2 :(得分:0)
您不必实现所有接口以使用简单的Date
类。
我建议您忘记Java的Date
类,并考虑您认为日期类所需的内容。例如:
toString()
会给你一个非常好的基本日期课程。 为了完整起见,我将告诉您接口的用途。您可以根据您学到了多少以及作业的要求来决定是否实施它们:
Serializable
用于将对象保存到流中。实际上,您不需要做太多工作来实现它。Comparable
用于比较对象(date1.compareTo(date2)
应返回一个整数,指示date1
是在date2
之前,之后还是相同。Clonable
用于创建对象的深层副本。