Ich bin ein wenig verwirrt über Java Lambdas und Methodenreferenzen Verhalten. . Für die Ex, haben wir diesen Code:Warum verhalten sich der äquivalente Lambda-Ausdruck und die Methodenreferenz beim Erfassen des statischen Feldwerts anders?
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);
}
}
Ausgang:
23
Dies funktioniert wie erwartet, aber wenn wir
s ersetzen -> sBuilder.append (e)
mit
sB uilder :: anhängen
wird der Ausgang sein:
2
Sie irgendwelche Ideen, wie dies zu erklären? Das sind nicht die gleichen Dinge? Vielen Dank.
Ist [diese] (http://stackoverflow.com/questions/30514995/what-is-the-difference-between-a-lambda-and-a-method-reference-at-a -runtime-leve) zu kompliziert für ein Duplikat? –
@SotiriosDelimanolis ein bisschen :) danke für nützliche Hinweise und Antwort – j2esu