1.匿名內部類中的變量捕獲
public class App { String s1 = "全局變量"; public void testInnerClass() { String s2 = "局部變量"; new Thread(new Runnable() { String s3 = "內部變量"; @Override public void run() { System.out.println(this.s3); //this關鍵字,表示的是當前內部類類型的對象 System.out.println(s1); //直接訪問全局變量 System.out.println(s2); //直接訪問局部變量,但是不能對局部變量進行修改,默認是final類型 } }).start(); } public static void main(String[] args) { App app = new App(); app.testInnerClass(); } }
2.lambda表達式中的變量捕獲
public void testLambda() { String s2 = "局部變量Lambda"; new Thread(() -> { String s3 = "內部變量Lambda"; //訪問全局變量 System.out.println(this.s1); //this關鍵字,表示就是所屬方法所在類型對對象 //訪問局部變量 System.out.println(s2); //不能局部修改,默認是final類型 System.out.println(s3); }).start(); }