【问题标题】:Is there a way to add methods to GregorianCalendar in Java?有没有办法在 Java 中向 GregorianCalendar 添加方法?
【发布时间】:2011-01-25 11:05:21
【问题描述】:

我想创建一个名为“isBetween”的方法,它返回一个布尔值,查看 GregorianCalendar 日期是否介于其他两个日期之间。或者,我只想为类定义 的运算符。我对 Java 很陌生,所以我不确定....我什至可以做其中任何一个吗?如果有,怎么做?

【问题讨论】:

  • 回答建议在 3、2、1 使用 Joda 时间
  • 使用 Joda 时间:joda-time.sourceforge.net(对不起,我迟到了!)

标签: java comparison operators operator-overloading gregorian-calendar


【解决方案1】:

Java 不支持猴子补丁或运算符重载,但您可以随意继承 GregorianCalendar 并添加您需要的任何方法。

但是,你真的需要一个新的方法来做cal.after(startCal) && cal.before(endCal) 吗?

【讨论】:

  • 很明显,我错过了之前和之后的存在。我在看到你的答案前大约一分钟就看到了他们。谢谢
  • @timdiggerm:Calendar API 庞大且杂乱无章,因此很容易忽略一些事情,尤其是抽象超类中的方法...
【解决方案2】:

不,您不能向预先存在的类添加方法,也不能在 Java 中进行运算符重载。

例如,您可以在自己的类中提供静态实用程序方法。

【讨论】:

    【解决方案3】:

    我建议反对扩展类 - 你没有添加任何特定于特定类实例的行为,你表达的逻辑适用于任何 GregorianCalendar(或可能是任何日历)。

    正如 Joachim 所说,实用程序类中的静态方法是可行的方法 - 如果 Java 曾经获得按照 C# 的扩展方法(我知道它们被建议用于 Java 7,但我认为它们目前已发布)您可以在那时对其进行修改。

    哦,无论如何都要使用Joda Time :)

    【讨论】:

      【解决方案4】:

      你应该尝试扩展它:

      class MyGregorianCalendar extends GregorianCalendar
      

      【讨论】:

        猜你喜欢
        • 2020-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-23
        • 2020-03-20
        • 1970-01-01
        相关资源
        最近更新 更多