Java 匿名类中this和Lambda表达式中this的区别

结论:匿名类中的this是“匿名类对象”本身;Lambda表达式中的this是“调用Lambda表达式的对象”。

验证:

(1)创建函数式接口

public interface Function {
    void doSomething();
}

(2)编写测试类

public class MainTest {
    public static void main(String[] args) {
        MainTest mainTest = new MainTest();
        mainTest.test();
    }

    private void test() {
        System.out.println("----------匿名类----------");
        anonymousClassVsLambda(new Function() {
            @Override
            public void doSomething() {
                System.out.println(this.getClass().getName());
            }
        });

        System.out.println("----------lambda----------");
        anonymousClassVsLambda(() -> {
            System.out.println(this.getClass().getName());
        });
    }

    private void anonymousClassVsLambda(Function function) {
        function.doSomething();
    }
}

(3)运行并查看结果

----------匿名类----------
com.sinocyc.test.MainTest$1
----------lambda----------
com.sinocyc.test.MainTest

 

posted @ 2020-04-19 18:40  sinocyc  阅读(775)  评论(0编辑  收藏  举报