私は、Javaラムダとメソッド参照の動作についてちょっと混乱しています。 。元のために、私たちはこのコードを持っている:静的なフィールドの値をキャプチャするとき、同等のラムダ式とメソッド参照が異なる動作をするのはなぜですか?
import java.util.function.Consumer;
public class Main {
private static StringBuilder sBuilder = new StringBuilder("1");
public static void main(String[] args) {
Consumer<String> consumer = s -> sBuilder.append(s);
sBuilder = new StringBuilder("2");
consumer.accept("3");
System.out.println(sBuilder);
}
}
出力:
23
この私たちが代わる場合に予想されるように動作しますが、
S - > sBuilder.append(S)
と
sB uilder ::
追加出力は次のようになります。
2
はどのようにこれを説明するために、あなたに任意のアイデアをお持ちですか?これは同じものではありませんか?ありがとう。
[この](http://stackoverflow.com/questions/30514995/what-is-the-difference-between-a-lambda-and-a-method-reference-at-aです-runtime-leve)も複製用に畳み込まれていますか? –
@SotiriosDelimanolis少し参考になりました。参考にしていただきありがとうございます。 – j2esu