高分悬赏:Java语言函数和lambd表达式中都可以定义变量,这两个变量的作用有什么区别呢,怎么选择
举个例子说明下:第一个是lambda,第二个是正常函数实现接口
interface A { //接口A
int methodA();
}
public void test() { // 下面的两个方式都是实现接口A
A a2 = () -> {
int returnVal = 1; // lambda中定义的变量
return returnVal;
};
A a1 = new A() {
@Override
public int methodA() {
int returnVal = 1; // 函数方法中定义的变量
return returnVal;
}
};
}
我们可以看到这里lambda其实就是一个接口实现的简写,
所以lambda中定义的变量相当于是:你自己实现了一个接口的时候在这个方法里面定义了一个变量,不懂可以追问(望采纳)
为了演示lambda没有简写(可以这样写 A a2 = () -> 1;)
lambda表达式不能复用,函数是可以复用的,里面定义的变量都不可以拿出来使用
函数之间传递信息,或将lambda中的信息拿出来,可以传引用进去,然后拿出来,如List、Array等都可以