小编Che*_*oss的帖子

从匿名类到 lambda 表达式

当使用下面的匿名类时,我们调用的变量x没有问题

interface Age { 
    int x = 21; 
    void getAge(); 
} 

class AnonymousDemo  { 
    public static void main(String[] args) { 
        Age oj1 = new Age() { 
            @Override
            public void getAge() { 
                // printing age 
                System.out.print("Age is "+x); 
            } 
        }; 
        oj1.getAge(); 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

但是当我使用下面的 lambda 表达式相同的代码时,出现了异常:

interface Age { 
    int x = 21; 
    void getAge(); 
} 

class AnonymousDemo { 
    public static void main(String[] args) { 
        Age oj1 = () -> { System.out.print("Age is "+x); };
        oj1.getAge(); 
    } 
} 
Run Code Online (Sandbox Code Playgroud)

这里会出现什么问题呢?知道lambda表达式只是实现匿名类的缩写。

java lambda anonymous-class functional-interface

3
推荐指数
1
解决办法
4991
查看次数