现在大多数人都痛苦地意识到,处理日历日期的Java API(特别是类java.util.Date
和java.util.Calendar
)非常混乱。
就我所知:
- Date是可变的
- Date表示时间戳,而不是日期
- 没有简单的方法将日期组件(日、月、年等)与Date相互转换
- Calendar使用起来很笨拙,并试图将不同的日历系统合并到一个类中
这篇文章(链接失效 - 存档链接)很好地总结了这些问题,JSR-310也解释了这些问题。
现在我的问题是:
这些类是如何进入Java SDK的?大多数问题似乎相当明显(特别是Date可变),应该很容易避免。那么它是怎么发生的?时间压力?还是问题只有在回顾时才显而易见?我意识到这不是严格的编程问题,但我认为了解API设计如何出错很有趣。毕竟,错误总是一个很好的学习机会(而且我很好奇)。