中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Lambda表達式與匿名內部類的聯系和區別實例分析

發布時間:2020-10-13 18:20:05 來源:腳本之家 閱讀:329 作者:cakincqm 欄目:編程語言

本文實例講述了Java Lambda表達式與匿名內部類的聯系和區別。分享給大家供大家參考,具體如下:

一 點睛

Lambda表達式與匿名內部類存在如下相同點:

  • Lambda表達式與匿名內部類一樣,都可以直接訪問“effectively final”的局部變量,以及外部類的成員變量(包括實例變量和類變量)。
  • Lambda表達式創建的對象與匿名內部類生成的對象一樣, 都可以直接調用從接口繼承得到的默認方法。

Lambda表達式與匿名內部類主要存在如下區別:

  • 匿名內部類可以為任意接口創建實例——不管接口包含多少個抽象方法,只要匿名內部類實現所有的抽象方法即可。但Lambda表達式只能為函數式接口創建實例。
  • 匿名內部類可以為抽象類、甚至普通類創建實例,但Lambda表達式只能為函數式接口創建實例。
  • 匿名內部類實現的抽象方法的方法體允許調用接口中定義的默認方法;但Lambda表達式的代碼塊不允許調用接口中定義的默認方法。

二 實戰

1 代碼

@FunctionalInterface
interface Displayable
{
  //定義一個抽象方法和默認方法
  void display();
  default int add(int a,int b)
  {
    return a+b;
  }
}
public class LambdaAndInner {
  private int age =15;
  private static String name="外部類類變量";
  public void test()
  {
    String book="我是effectively final";
    Displayable dis =()->
    {
      //訪問 effectively final 的局部變量
      System.out.println("book局部變量為:"+book);
      //訪問外部類的類變量和實例變量
      System.out.println("外部類的age實例變量為:"+age);
      System.out.println("外部類的name類變量為:"+name);
    };
    dis.display();
    //調用dis對象從接口繼承的add方法
    System.out.println(dis.add(3,5));
  }
  public static void main(String[] agrs)
  {
    LambdaAndInner lambda = new LambdaAndInner();
    lambda.test();
  }
}

2 運行

book局部變量為:我是effectively final

外部類的age實例變量為:15

外部類的name類變量為:外部類類變量

8

更多java相關內容感興趣的讀者可查看本站專題:《Java面向對象程序設計入門與進階教程》、《Java數據結構與算法教程》、《Java操作DOM節點技巧總結》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》

希望本文所述對大家java程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

竹溪县| 永济市| 东阿县| 疏勒县| 通辽市| 德安县| 正定县| 施甸县| 项城市| 新巴尔虎左旗| 格尔木市| 棋牌| 八宿县| 鹤峰县| 北京市| 湛江市| 松阳县| 视频| 安丘市| 保康县| 高平市| 华安县| 息烽县| 军事| 哈巴河县| 通州区| 达州市| 岑巩县| 怀宁县| 巴林左旗| 台中县| 永仁县| 婺源县| 焉耆| 许昌市| 砀山县| 宜宾县| 苗栗县| 弋阳县| 咸丰县| 安多县|