SE8 内部イテレータ

多くの言語では内部イテレータで行う処理を関数もしくはクロージャで記述する。

Javaではクロージャは使用できないので、匿名クラスを使う。
たとえば、コレクションの要素を出力する場合、次のように記述できる。

Collection<String> texts = ... ;
texts.forEach(new Consumer<String>() {
    @Override
    public void accept(String text) {
        System.out.println(text);
    }
});

for文の代用として使用できる内部イテレータのメソッドがforEachメソッドなる。
forEachメソッドの引数はConsumerインタフェースを実装した匿名クラスになっている。
実際に行いたい処理はConsumerインタフェースのacceptメソッドに書いてあるprintlnメソッドだけでも、匿名クラスを定義しなくてはいけないため、冗長 な記述になってしまう。

ラムダ式を使えば、匿名クラスを簡潔に記述することができる。

Collection<String> texts = ... ;
texts.forEach(text -> System.out.println(text));

投稿者 java

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です