ほとんどの人が痛感しているように、カレンダーの日付を処理するための Java API (具体的にはjava.util.Date
とのクラスjava.util.Calendar
) はひどい混乱です。
私の頭の上から:
- 日付は変更可能です
- 日付は日付ではなくタイムスタンプを表します
- 日付コンポーネント (日、月、年など) と日付を簡単に変換する方法がない
- Calendar は扱いにくく、異なる暦体系を 1 つのクラスにまとめようとします
この投稿はそれを非常にうまくまとめており、JSR-310はこれらの問題についても説明しています。
今私の質問は:
これらのクラスはどのようにして Java SDK に組み込まれたのでしょうか? これらの問題のほとんどはかなり明らかで (特に Date は変更可能です)、回避するのは簡単なはずです。それで、それはどのように起こったのですか?時間的制約?それとも、問題は振り返ってみれば明らかですか?
これは厳密にはプログラミングの問題ではないことは理解していますが、API 設計がどのようにうまくいかないかを理解するのは興味深いことです。結局のところ、間違いは常に良い学習の機会です (私は興味があります)。