仕事で JavaFX を利用した GUI アプリを作ることになり、最新のバージョンの Java の開発環境を立ち上げたのだが、なんかいろいろ新しくなってて驚いた。
例えば、あるフォルダーの中にあるすべてのサブフォルダーに対して○○○する…みたいなことを書く場合、かつての自分なら、
File[] subDirList = dir.listFiles(new FileFilter() { @Override public boolean accept(File file) { return file.isDirectory(); } }); for (File subDir : subDirList) { ~ }
という感じで書いてたのだが、最近は、ラムダ式というのを使って、
for (File subDir : dir.listFiles((file) -> file.isDirectory())) {
~
}
という具合に、シンプルな書き方ができるんだね。
さらには、メソッド参照とやらで、
for (File subDir : dir.listFiles(File::isDirectory)) {
~
}
とも書けるらしい。ちょっと感動。
そもそも、リストや配列の数だけ繰り返すループの書き方について、今でこそ、
for (File subDir : subDirList) {
~
}
という for 文の書き方を普通に使っているが、昔は、
for (int i = 0, c = subDirList.length; i < c; i++) { ~ }
という風にカウンタ変数を宣言してループしてたわけで、上のような for 文の書き方が登場したときも同じように感動したな。