今日はJava 10から導入されたローカル変数の型推論から見る技術の読み方について紹介します。
https://www.javadrive.jp/start/var/index9.html

この記事を読むと、Javaにも型推論きたんだなと思いました。
ただ、最近だと動的型付けの言語が型をサポートするという潮目の中、なぜ今更...?と思いました。

何かが新しい機能が導入された時に覚えることは「使うべき所」と「使ってはいけない」ところです。
軽く調べるとこんな記事が出てきます。
https://qiita.com/dhirabayashi/items/a4a13d19b41779325bb0

ただ、これは本当に「使うべき所」なのでしょうか?
新しい機能が導入されるときは、必ず「何かしらの問題を解く時」に導入されます。
今回のローカル変数の型推論について調べると、大半が型推論便利!だけど右辺を見ても戻り値の型を正確には推測できないときは気をつけようね!で終わってることが多く、これだけでは何の問題も解決してないように思えます(むしろ副作用を追加しているだけのように思える)。

そこで、使うべき所と使ってはいけないはどこか?という考え方から「導入された背景は何か?」と考えを切り替えて見ます。
そこで行き着いたのがこちらの記事です。
https://www.ne.jp/asahi/hishidama/home/tech/java/var.html

この記事の結論は以下の通りです。

  • 匿名クラスの変数を作ることができるのが、ローカル変数の型推論のメリットである(=問題の解消部分)
  • 型推論してほしいって要望もあるから導入されたってのも一定あるかもね
  • ローカル変数はスコープ狭いから使う/使わないの議論は本質的でないため、柔軟に考えた方が良いよ(つまり、匿名クラスの変数を作るときだけ使えばいいよと言っている)

ってことで、自分の感想をまとめますとこんな感じです。

  • 新機能が導入された時は、まず「使い所」を抑える
  • 次にその機能が導入された背景(何の問題を解きたかったのか)を抑える
  • 真の目的を知った上で「使い所」を再度考える

こう考えることで、「varを使うと型定義しなくていいから簡潔に書けるよね!」という理解から「varを使うべき所は匿名クラスの変数を作る時」という一歩踏み込んだ理解に変わります。

という型推論の話からの〜技術の読み方の紹介でした!