我已经有了这段代码,但是IntelliJ告诉我用lambda代替匿名,但我不知道如何。谁能帮我这个?这是我的代码:
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());
}
});
通常,类似这样的内容:
methodUsingYourClass(new YourClass() {
public void uniqueMethod(Type1 parameter1, Type2 parameter2) {
// body of function
}
});
被替换为
methodUsingYourClass((Type1 parameter1, Type2 parameter2) -> {
// body of function
});
对于您的特定代码:
soundVolume.valueProperty().addListener(
(ObservableValue<? extends Number> ov,
Number old_val, Number new_val) -> {
main.setSoundVolume(new_val.doubleValue());
main.getMediaPlayer().setVolume(main.getSoundVolume());
});
请注意,仅当匿名类具有一个方法时,才可以用lambda替换匿名类。如果匿名类具有更多方法,则无法进行替换。
上一节“匿名类”介绍了如何在不给基类命名的情况下实现它。尽管这通常比命名类更简洁,但是对于仅具有一个方法的类,即使是匿名类也显得有些繁琐。Lambda表达式使您可以更紧凑地表达单方法类的实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句