OBONO’s Diary

へっぽこプログラマの戯言

Java

仕事で 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 文の書き方が登場したときも同じように感動したな。