java8新特性-lambda(變量捕獲)


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();
}    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM