gpt4 book ai didi

java - 如何在 Java 中用 lambda 替换匿名类?

转载 作者:IT老高 更新时间:2023-10-28 20:40:33 25 4
gpt4 key购买 nike

我有这段代码,但 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((parameter1, parameter2) -> {
// body of function
});

参数的类型可以从用法中推断出来,但在某些情况下指定它们是有用的。这部分来自上面的例子

(parameter1, parameter2) -> {

如果你决定明确指定类型,就会变成这个

(Type1 parameter1, Type2 parameter2) -> {

对于您的具体示例,您可以使用:

soundVolume.valueProperty().addListener(
(ov, old_val, new_val) -> {
main.setSoundVolume(new_val.doubleValue());
main.getMediaPlayer().setVolume(main.getSoundVolume());
}
);

注意只有当匿名类有一个方法时,才能用 lambda 替换匿名类。如果匿名类有更多的方法,那么替换是不可能的。

来自 the oracle documentation :

The previous section, Anonymous Classes, shows you how to implement a base class without giving it a name. Although this is often more concise than a named class, for classes with only one method, even an anonymous class seems a bit excessive and cumbersome. Lambda expressions let you express instances of single-method classes more compactly.

关于java - 如何在 Java 中用 lambda 替换匿名类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37695456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com