猿问

为什么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;

}


桃花长相依
浏览 603回答 1
1回答

慕标5832272

所以比较Calendar直接用ComparaTo()就好啦Date和Calendar是公认的烂。相同问题stackoverflowI 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对应关系
随时随地看视频慕课网APP

相关分类

Java
我要回答