wie man anonyme mit Lambda in Java ersetzt
Habe ich diesen code, aber IntelliJ sagt mir zu ersetzen, anonym, mit lambda, aber ich weiß nicht wie. kann mir jemand helfen mit diesem?
Hier ist mein code:
soundVolume.valueProperty().addListener(new ChangeListener<Number>() {
public void changed(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) {
main.setSoundVolume(new_val.doubleValue());
main.getMediaPlayer().setVolume(main.getSoundVolume());
}
});
Kommentar zu dem Problem
Sie wissen, dass dies nur ein Vorschlag, richtig?
InformationsquelleAutor der Frage yukashima huksay | 2016-06-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der Regel so etwas wie:
ersetzt mit
Für Ihre spezifische code:
Hinweis der Ersatz von einem anonymen Klasse mit der lambda ist nur möglich, wenn die anonyme Klasse hat eine Methode. Wenn die anonyme Klasse besitzt weitere Methoden, die substitution ist nicht möglich.
Vom oracle-Dokumentation:
InformationsquelleAutor der Antwort Davide Lorenzo MARINO
Warum lassen Sie nicht IntelliJ zeigen Sie? Platzieren Sie den cursor auf die Deklaration und drücken Sie Alt + EINGABETASTE (oder Option + Enter, wenn auf einem Mac), um die Absichten popup. Wählen Sie "Ersetzen mit "lambda" und beobachten Sie die transformierten code...
InformationsquelleAutor der Antwort Per Huss
Es nicht wirklich helfen mit der Lesbarkeit, aber hier ist es.
Beachten Sie, dass
main
's zu verweisen, die Finale oder die effektiv Letzte für diese zu arbeiten.InformationsquelleAutor der Antwort Yassin Hajaj
code für Klarheit, können Sie auch eine variable deklarieren, die mit lambda und übergeben Sie die variable, um addListener-Methode. zum Beispiel
soundVolume.valueProperty().addListener(listener);
ChangeListener<Number> listener = (observable, oldValue, newValue) -> { ... };
InformationsquelleAutor der Antwort Fahime Ghasemi