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

 恋若寒1999 发布于 2022-11-03 01:32

源码如下,当参数不是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;
}
1 个回答
  • 所以比较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对应关系

    2022-11-12 01:55 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有