以下に示すコードスニペットは機能します。ただし、なぜ機能するのかはわかりません。ラムダ関数が情報をインターフェイスに渡す方法のロジックを完全には理解していません。
制御はどこに渡されますか?コンパイラーn
は、ループ内のそれぞれとmessage
作成されたものをどのように理解していますか?
このコードはコンパイルされ、期待される結果が得られます。どうすればいいのか分かりません。
import java.util.ArrayList;
import java.util.List;
public class TesterClass {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Akira");
names.add("Jacky");
names.add("Sarah");
names.add("Wolf");
names.forEach((n) -> {
SayHello hello = (message) -> System.out.println("Hello " + message);
hello.speak(n);
});
}
interface SayHello {
void speak(String message);
}
}