搜尋

首頁  >  問答  >  主體

java - 为什么Calendar类的before,after方法的参数是Object类型的?

源码如下,当参数不是Calendar的实例时返回的是false,但请问这样的比较有意义吗?
我个人觉得参数类型是不是不妥?比如我拿Date类型去做比较,不抱任何错,但其实永远返回的都是false

public boolean before(Object when) {
    return when instanceof Calendar
        && compareTo((Calendar)when) < 0;
}

public boolean after(Object when) {
    return when instanceof Calendar
        && compareTo((Calendar)when) > 0;
}

//我认为这样比较合理
public boolean after(Canlendar when) {
    return compareTo(when) > 0;
}
PHP中文网PHP中文网2805 天前832

全部回覆(1)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 16:42:52

    所以比較Calendar直接用ComparaTo()就好啦

    DateCalendar是公認的爛。
    相同問題stackoverflow

    I think there is no particular reason for that. java.util.Calendar has some design issues we have have to live with, unfortunately.


    補充:
    Java8實作了新的套件java.time,值不可變,且執行緒安全,套件裡主要的類別與格式

    與舊API對應關係

    與舊API對應關係🎜🎜🎜🎜🎜與舊API對應關係🎜🎜🎜🎜🎜與舊API對應關係🎜🎜🎜🎜🎜與舊API對應關係🎜🎜🎜🎜🎜與舊API對應關係🎜🎜🎜🎜🎜與舊API對應關係🎜🎜🎜🎜🎜與舊API。

    回覆
    0
  • 取消回覆