为什么JavaDateAPI(java.util.Date,.Calendar)如此混乱?

为什么JavaDateAPI(java.util.Date,.Calendar)如此混乱?

正如大多数人痛苦地意识到的,JavaAPI用于处理日历日期(特别是类)java.util.Datejava.util.Calendar)是一个可怕的烂摊子。

从我的头顶上:

  • 日期是可变的
  • 日期代表时间戳,而不是日期。
  • 在日期组件(日、月、年.)之间进行转换不是一种简单的方法。和日期
  • 日历使用起来很笨重,并试图将不同的日历系统组合成一个类。

这个职位总结得很好,而且JSR-310也说明了这些问题。

现在我的问题是:

这些类是如何进入JavaSDK的?这些问题中的大多数看起来相当明显(特别是日期是可变的),应该很容易避免。那它是怎么发生的?时间压力?还是只在回首时才会发现这些问题?

我意识到这并不是一个严格意义上的编程问题,但我会发现理解API设计是如何如此错误是很有趣的。毕竟,错误总是一个很好的学习机会(我很好奇)。


慕无忌1623718
浏览 568回答 3
3回答

交互式爱情

Java早期的API不过是他们那个时代的产物。不变性只是在那之后几年才成为一个流行的概念。你说不变性是“显而易见的”。现在也许是真的,但那不是那个时候。就像依赖注入现在是“明显的”,但不是10年前。同时,创建Calendar对象也很昂贵。由于向后兼容的原因,它们仍然是这样。也许更不幸的是,一旦认识到错误,就不再推荐旧类,并为未来的所有API创建了新的日期/时间类。这在一定程度上是在JDK 8采用类似于JodaTime的API时发生的(java.time,JSR 310),但实际上太少了,太迟了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java