からJava8 Lambdas vs Anonymous classes:
"... [Anonymous Inner Classes]は、AICのスーパークラスとインタフェースから解決され、語彙的に囲む環境で発生する名前をシャドウすることができます。字句的に解決されます。
スコープに関する上記の説明が与えられていると、Java匿名インナークラスは、ラムダのように単純に変換されていましたか?コードのスコープがJavaの匿名の内部クラスをラムダ式に変換することからどのように変わるのでしょうか?
これら2枚、彼らは同じように振る舞うようになります。
button.addClickHandler(clickEvent -> doSomething());
と
button.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent clickEvent) {
doSomething();
}
});
が、内側の方法ではなく、doSomething(this)
た場合には、ケースでしょうか?またはdoSomething(myVariable)
?
範囲の変更がどのように動作し、どのように動作するかの例は、非常に驚くべきものです。私は、Lambdasが匿名の内部クラスとは異なる他の方法があることを理解していますが、範囲の変更であり、わかりやすい説明が見つかりませんでした。
これを参照してください。http://stackoverflow.com/questions/24202236/lambda-this-reference-in-java –
「これ」に応じてコードが異なる動作(またはコンパイル)をするシナリオは考えられません。に指差す?あまりにも難しいはずがありません。 – shmosel
具体的には「this」を参照してください:私の質問は、「AICとラムダのスコープの違いによって、この2つの違いは違いますか? ? " –