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