Java lambdas ve yöntem referansları davranışı hakkında biraz kafam karışık. . Eski için, bu kodu vardır:Eşdeğer lambda ifadesi ve yöntem referansı, statik alan değerini yakalarken neden farklı davranıyor?
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);
}
}
Çıktı:
23
Biz değiştirirseniz beklendiği gibi çalışır, ancak
s -> sBuilder.append (ler)
with
sB uilder ::
ekler çıkış olacaktır:
2
nasıl bu açıklamaya Sana fikir var mı? Bu aynı şey değil mi? Teşekkürler.
[Bu] (http://stackoverflow.com/questions/30514995/what-is-the-difference-between-a-lambda-and-a-method-reference-at-a mi -runtime-leve) çoğaltmak için çok kıvrık? –
@SotiriosDelimanolis :) yararlı referanslar için teşekkür biraz teşekkür Başka bir deyişle – j2esu