为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

桃花长相依 2019-03-21 18:19:58
源码如下,当参数不是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 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

所以比较Calendar直接用ComparaTo()就好啦
https://img1.sycdn.imooc.com//5cb54b160001c3c608000145.jpg

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,值不可变,且线程安全,包里主要的类与格式

https://img1.sycdn.imooc.com//5cb54b25000110fd08000377.jpg

与旧API对应关系

https://img1.sycdn.imooc.com//5cb54b280001b45408000390.jpg

查看完整回答
反对 回复 2019-04-16
  • 1 回答
  • 0 关注
  • 602 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信