gpt4 book ai didi

java - 没有类型的 Lambda 表达式

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:06 25 4
gpt4 key购买 nike

我理解 Java8 lambda 表达式的语法,但为什么下面的代码在没有 x 的特定类型声明的情况下也能工作?为什么要打印“baz”?

public class LambdaExpressions {

interface Foo {
void bar(Object o);
}

static void doo(Foo f) {
f.bar("baz");
}

public static void main(String[] args) {

doo( x -> {System.out.println(x);});
}

}

最佳答案

因为接口(interface)是standard functional interface

It's a functional interface because it contains only one abstract method. This method takes one parameter and returns a [void] value

(针对这个问题改写)

lambda 表达式 x -> { System.out.println(x); } 可以重写为匿名类。

new Foo() {
@Override
public void bar(Object x) {
System.out.println(x);
}
}

当你调用doo时,你将这个功能接口(interface)作为f传递,然后它会执行f.bar("baz");,所以 "baz"x,它被打印出来了。

所有在一个主要方法中,这看起来像

public static void main(String[] args) {
Foo f = new Foo() {
@Override
public void bar(Object x) {
System.out.println(x);
}
};

f.bar("baz");
}

关于java - 没有类型的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40117215/

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