Generalnie coś takiego:
methodUsingYourClass(new YourClass() {
public void uniqueMethod(Type1 parameter1, Type2 parameter2) {
// body of function
}
});
otrzymuje z
methodUsingYourClass((Type1 parameter1, Type2 parameter2) -> {
// body of function
});
dla danego kodu:
soundVolume.valueProperty().addListener(
(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) -> {
main.setSoundVolume(new_val.doubleValue());
main.getMediaPlayer().setVolume(main.getSoundVolume());
});
Uwaga zastąpienie anonimowej klasy lambdą jest możliwe tylko wtedy, gdy anonimowa klasa ma jedną metodę. Jeśli klasa anonimowa ma więcej metod, zastąpienie nie jest możliwe.
Od oracle documentation:
poprzedniej części, anonimowych klasy, pokazuje jak zaimplementować klasę bazową, nie dając mu nazwę. Chociaż jest to często bardziej zwięzłe niż klasa nazwana, dla klas z jedną tylko metodą, nawet klasa anonimowa wydaje się nieco nadmierna i kłopotliwa. Wyrażenia lambdy pozwalają wyrażać wystąpienia klas jednomodowych bardziej zwięzłe.
Wiesz, że jest to tylko sugestia, prawda? – Kai