web-dev-qa-db-ja.com

Java.util.DateとJava.util.Calendarは非推奨ですか?

新しいJava.timeAPIは、Java.util.Dateからさらに多くのものを提供しているようです。
Java 8?Java.util.DateJava.timeを完全に回避する必要があるため、新しいJava.util.Date APIがある場合にJava.util.Calendarを使用する理由はありますか?

8
Ondrej Bozek

短い答え:新しいAPIJava.timeは、Java.util.DateJava.util.Calendarを備えた旧世界よりもはるかに優れています。そうです、新しいコードでは新しいAPIを優先する必要があります。

簡単な概要:一度書いたら 表形式の機能の比較 さまざまな日時ライブラリについて。 Java.timeが欠落しているが、旧世界には存在する機能はほとんどありません。

  • 構成可能なグレゴリオ暦/ジュリアン暦のカットオーバー
  • クラスFieldPositionに基づく印刷(SwingコンポーネントFormattedTextFieldで使用)

非推奨について:Java.util.Dateのほとんどの部分はJava 1.1以降非推奨ですが、クラス自体(およびJava.util.Calendarも)は公式に非推奨ではなく、事実上のレガシーとして宣言されています。古いクラスのサポートは、レガシーコードとの下位互換性の目標にとって依然として重要です。したがって、オラクルはおそらく将来いつでもサポートを停止することはありません。しかし、おそらくOracleはもっと適用するでしょう 洗練された非推奨戦略

将来の開発: Java-8のリリースに完全に新しい日付/時刻API(Java.time)が組み込まれただけでなく、Java.util.Calendarにいくつかの機能拡張が含まれているのは興味深いことです。たとえば Calendar.Builder または SHORT_STANDALONE など。推測することしかできませんが、これは、Oracleが近い将来に古いAPIのサポートを停止する意思がないことも示しているようです。

11
Meno Hochschild