[语法] 用Lambda表示法为何变量名称不能一样?

楼主: liu2007 (è–¯)   2019-08-07 14:24:12
我今天才知道这个表示法(太久没碰Q_Q)
编译器显示绿色行错误,我不太确定正式的原因
只知道变量名称不要用x,y就能够通过编译
在使用Lambda表示法的时候,input部分的变量名称为何不能与已宣告的变量名称重复呢?
我以为在java里面,宣告就等于是创建一个子域,变量的对象都算在子域里
如下方黄色所宣告的x,y
可以请教一下到底要怎么解释这个错误的原因呢?
public class NewClass {
public static void main(String[] args) throws Exception {
int x = 3;
int y = 1;
B name = new B() {
@Override
public void test(int x, int y) {
// TODO Auto-generated method stub
}
};
B b = (x, y) -> System.out.println("test: " + (x + y));
b.test(x, y);
}
public interface B {
public void test(int x, int y);
}
}
作者: ssccg (23)   2019-08-07 15:15:00
docs.oracle.com/javase/specs/jls/se12/html/jls-15.htmllambda expression跟anonymous class是不一样的在lambda body里面的变量名称、this、super都跟surroundingcontext相同(除新增了lambda parameter定义的名称)用你的说法就是lambda expression不会创建子域

Links booklink

Contact Us: admin [ a t ] ucptt.com