たぷつきません

おなかがでてきた。もうたぷついてるやん。

SimpleDateFormat

 スレッドセーフじゃないことを騒いでるような文書がありますけど、問題はドキュメント化うんぬんじゃないでしょう。こちらの情報は実験とかしているけどソース見れば一発で分かるんで実験するまでもない。calendar というフィールドを持っちゃっていて、format(date) のdateがそのままこのフィールドにsetTimeしてから処理が始まるので当然スレッドセーフじゃないわけです。
 で、確かに実装にどうだろう感があるわけですが、「Simple」「単純な」と自明なんだから鬼首とったかのような表現の方がどうだろう(前者の方ね)。calenderというプロパティがある時点で怪しいし。
むしろ問題はSimpleDataFormatよりも、DateFormatの方が悪しき存在です。getInstance というファクトリメソッドになっているにも拘らず、その中を辿っていくと、もろ「new SimpleDateFormat(...)」 と直書きしているという…。なんの意味も無いじゃん。これがjava標準かと思うと泣けてくるわけです。
 しかもgetInstanceは、getDateTimeInstance、さらにgetというメソッドを使っていて、この3つ全てがpublic staticなんです。abstract classであるにも拘らず3つも名前資源を食いつぶしています。継承クラスのことを考えとらん。
 これが、インスタンス化手順を共通化したDateFormat継承クラス(もしくはインスタンス化するファクトリ)をDateFormatに対して registDefaultDateFormat(もしくはregistDefaultDateFormatFactory)できさえすれば良いんですけどね。