在java中开发一个简单的实用程序类(如Date类)

时间:2011-07-11 17:11:48

标签: java date

我是一名大学生。

在我们的大学里,我们必须用Java开发一个简单的Date类,类似于java.util包中提供的类。

如果我们这样做,那么我们可以在该类中实现哪些方法, 由于大多数方法在原始Date类中已弃用。

我在java / util / Date.java中看到了原始的Date类定义。作为java的初学者,我无法理解Serializable,Cloneable,Comparable和许多变量(如fasttime)的概念。

如果我们能够简单地实现这个日期类,那就太好了(因为我们必须在实验室中用3小时开发这个代码作为测试。)

是否有必要在简单的Date类中实现这些概念。

如果我将其作为项目并开始开发整个Date实用程序, 然后该代码将运行到许多页面 我的实验室课程还有3个小时无法完成。

所以有人请指导我......

我怀疑......

  1. 是否可以使用更简单的实现创建类似于Date类的实用程序类。
  2. 如果我们这样做,那么我们可以在该类中实现哪些方法,因为大多数有用的方法都在原始日期类中弃用。
  3. 提前致谢。

3 个答案:

答案 0 :(得分:6)

  1. Serializable表示可以将类序列化为可传输的二进制格式。
  2. Clonable意味着可以克隆该类,这对于正确行为来说非常棘手,主要是因为继承和可变性问题。
  3. Comparable表示该类支持比较与同类型的其他类。
  4. 其中Comparable是唯一需要任何代码才能运行的代码,它也可能是您方案中唯一使用的代码。

    Serializable是所谓的Marker Interface,它不需要任何代码来导致任何事情发生,因为它没有任何方法可以实现。只是存在标记对象作为支持某个东西和另一个类并检查该接口并根据其存在来做事。

    如果可能的话,

    Cloneable是你想要远离的东西。在Java中克隆对象并不简单,有很多陷阱,并且通常以可以想象的非直观方式运行。如果您真的想了解这一点,请了解详情read this article

    Comparable非常有价值,它可以让你比较相似的对象,看看是否小于,等于或大于另一个。这是排序和支持Comparators的集合类的要求。 Comparators可以被认为是Comparable的独立实现,可以插入其他类来控制对象的比较方式。

    java.util.Date是一个棘手的类,它似乎是一个直接的结构类型类,带有一些mutators和便捷方法,但日历数据的底层问题域并不那么简单。日历数学有很多例外案例。这就是为什么java.util.Date上有很多方法被弃用的原因,在很多情况下它们会产生错误的行为。

    要学习更多代码,请查看我开发的temporal package,以使标准Java Calendar包含非常基本的DateTimeTimeStamp类,它们都只是委托给Calendar的实例进行实际计算。

    注意: 此库代码为那些可能会抱怨不使用该库的人提前为JodaTime提供日期。

答案 1 :(得分:0)

由于这是一个实验室项目,为什么不列出“简单”Date类需要和应该具有的功能类型。例如,toString() - 返回Data的字符串表示形式或toMilliSecond() - 返回参考时间内的milliSecond数。

答案 2 :(得分:0)

您不必实现所有接口以使用简单的Date类。

我建议您忘记Java的Date类,并考虑您认为日期类所需的内容。例如:

  • 获取/设置日期
  • 获取/设置月份
  • 获取/设定年份
  • 获取星期几
  • toString()

会给你一个非常好的基本日期课程。 为了完整起见,我将告诉您接口的用途。您可以根据您学到了多少以及作业的要求来决定是否实施它们:

  • Serializable用于将对象保存到流中。实际上,您不需要做太多工作来实现它。
  • Comparable用于比较对象(date1.compareTo(date2)应返回一个整数,指示date1是在date2之前,之后还是相同。
  • Clonable用于创建对象的深层副本。