En général, quelque chose comme ça:
methodUsingYourClass(new YourClass() {
public void uniqueMethod(Type1 parameter1, Type2 parameter2) {
// body of function
}
});
est remplacé par
methodUsingYourClass((Type1 parameter1, Type2 parameter2) -> {
// body of function
});
Pour votre code:
soundVolume.valueProperty().addListener(
(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) -> {
main.setSoundVolume(new_val.doubleValue());
main.getMediaPlayer().setVolume(main.getSoundVolume());
});
Remarque le remplacement d'une classe anonyme lambda n'est possible que si la classe anonyme a une méthode. Si la classe anonyme a plus de méthodes de substitution n'est pas possible.
À partir de la documentation d'oracle:
La section précédente, Anonyme Classes, vous montre comment implémenter une classe de base sans lui donner un nom. Bien que ce est souvent plus concis qu'une classe nommée, pour les classes avec seulement une méthode, voire une classe anonyme semble un peu excessif et trop lourd. Les expressions Lambda, vous permettent d'exprimer les instances de la seule méthode de classes de manière plus compacte.