gpt4 book ai didi

java - lambda表达式会自动为其入口参数创建新对象吗?

转载 作者:行者123 更新时间:2023-11-30 02:08:25 25 4
gpt4 key购买 nike

我是函数式编程的新手,到目前为止我已经了解如何使用它,匿名函数等。

我看到了许多代码示例,其中 lambda 表达式中需要作为参数的对象实际上当时并不存在(它未实例化)。

例如,是这样的:

myClass.myMethod(c -> {my overridden code});

和这个一样

myClass.myMethod(new String() -> {my overridden code});

考虑到 c 没有在我的代码中声明,并且 myMethod 正确实现了一个功能接口(interface),其中抽象方法需要一个字符串?

编辑:

我对这个问题有一些疑问: JavaFX ComboBox Image这部分代码:

comboBox.setCellFactory(c -> new StatusListCell());

我不知道 c 是从哪里获取的,它根本没有声明,这就是为什么我想知道 lambda 表达式是否可以自动创建新对象。

最佳答案

c 实际上只是一个占位符,就像方法中的参数一样(这与此处 lambda 的功能没有区别)。

myClass.myMethod(c -> {my overridden code});

相当于以下内容

myClass.myMethod(new Consumer<String>(){
@Override
public void accept(String c) {
{my overridden code}
}
}

所以你的问题的答案是:不。lambda 代表一个方法、一个函数,但它本身并不是一个可执行部分,它必须使用外部参数来调用。

关于java - lambda表达式会自动为其入口参数创建新对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50788477/

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