Nem*_*Sol 5 java lambda java-8
我理解Java8 lambda表达式的语法,但为什么下面的代码在没有x的特定类型声明的情况下工作?为什么要打印"巴兹"?
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);});
}
}
Run Code Online (Sandbox Code Playgroud)
由于接口是标准功能接口
它是一个功能界面,因为它只包含一个抽象方法.此方法接受一个参数并返回[void]值
(为这个问题重新编写)
lambda表达式 x -> { System.out.println(x); }可以重写为匿名类.
new Foo() {
@Override
public void bar(Object x) {
System.out.println(x);
}
}
Run Code Online (Sandbox Code Playgroud)
当您调用doo,则通过这个功能接口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");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |