Java9で意外なものが非推奨(Deprecated)になっていた
new Double(99.999)とかnew Integer(1)とかの書き方はJava9でDeprecatedになっていたことを今更ながら知った。Double.valueOf(99.999)とかInteger.valueOf(1)と書けってことらしい。
— つりーべる (@tada_suzu) 2018年7月9日
Java10を使って勉強のため、本を写経していたら
Double d = new Double(99.999);
こんな感じのプログラムの場所で取り消し線が引かれてアレ?となった。 調べてみたら、Java9でコンストラクタに値を入れる系が非推奨になっている。
これからはこう書こうね、ってことのようだ。
Double d = Double.valueOf(99.999);
Doubleを例にしたが、IntegerやFloatなども非推奨になっているので注意が必要。
下記リンク先にコンストラクタの書き方で非推奨になったものがまとまっているのでチェックしておくとよさそう。
Deprecated List (Java SE 9 & JDK 9 )
Java入門者がJava8までをベースに書かれた本やチュートリアルのサンプルプログラムを写経していると謎の取り消し線が出てアレレ?ってなりそうだなと思った。
JavaDocを見れば答えがちゃんと書いてあるんだけども、入門者はJavaDoc見ないだろうしなぁ。
というか、Java11が正式リリースされたときにJava9以降で非推奨になった一覧も改めて公開されるのだろうか?
それに、非推奨になったメソッドはいつ消えてもおかしくないってことらしいけど、いつのバージョンで消えちゃうのか…
Twitterで「forRemoval=true」じゃないから消えないぞ、と指摘を戴きました。感謝感謝。
追記
なぜ非推奨になったのか?の理由はこれかな?
[JDK-8176335] Release Note: Deprecation of Boxed Primitive Constructors - Java Bug System
メモリの使用量節約みたいなことが書いてある。