java.util.Date和java.util.Calendar是否已被弃用?

Ond*_*zek 6 java.util.date java-8 jsr310

似乎新的java.timeAPI提供了所有内容java.util.Date以及更多内容.自Java 8以来新的API出现时
是否有任何理由使用?应和完全避免?java.util.Datejava.timejava.util.Datejava.util.Calendar

Men*_*ild 9

简短的回答:新的API java.time的方式比旧世界更好的java.util.Datejava.util.Calendar.所以,是的,在新代码中应首选新API.

快速概述:一旦我为各种日期时间库编写了表格形式的功能比较.java.time旧世界几乎没有遗漏但仍存在的特征:

  • 可配置的格里高利/朱利安切换
  • 基于类打印FieldPosition(在Swing组件中使用FormattedTextField)

关于弃用:虽然java.util.Date自Java 1.1以来大多数部分都已被弃用,但是类本身(java.util.Calendar也是)也没有被正式弃用,只是被宣布为事实上的遗产.对于向后兼容遗留代码的目标而言,旧类的支持仍然很重要.因此Oracle可能不会在将来的任何时候停止支持.但也许Oracle会采用更复杂的弃用策略.

未来的发展:有趣的是,Java-8的发布不仅包含了一个全新的日期/时间API(java.time),而且还看到了一些增强功能java.util.Calendar,例如Calendar.BuilderSHORT_STANDALONE等.好吧,我只能推测但这也似乎表明甲骨文不愿意在不久的将来停止对旧API的支持.