大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java匿名內(nèi)部類的概念

Java匿名內(nèi)部類的概念

更新時間:2022-12-21 12:29:23 來源:動力節(jié)點 瀏覽1755次

匿名類是沒有名稱的本地類。使用new運算符在一個簡潔的表達式中定義和實例化匿名類。本地類定義是 Java 代碼塊中的一條語句,而匿名類定義是一個表達式,這意味著它可以作為更大表達式(例如方法調(diào)用)的一部分包含在內(nèi)。當一個本地類只被使用一次時,考慮使用匿名類語法,它將類的定義和使用放在完全相同的地方。

用匿名類實現(xiàn)的枚舉

公共 java.util.Enumeration 枚舉(){
  // 匿名類被定義為返回語句的一部分
  返回新的 java.util.Enumeration() {
    可連接電流;= 頭;
    { 當前 = 頭; } // 用實例初始化器替換構(gòu)造函數(shù)
    public boolean hasMoreElements() { return (current != null); }
    公共對象 nextElement() {
      if (current == null) throw new java.util.NoSuchElementException();
      對象值=當前;
      current = current.getNext();
      返回值;
    }
  }; // 注意所需的分號:它終止返回語句
}

匿名類的一個常見用途是提供適配器類的簡單實現(xiàn)。適配器類是定義由其他某個對象調(diào)用的代碼的類。以java.io.File類的list()方法 為例。此方法列出目錄中的文件。不過,在返回列表之前,它會將每個文件的名稱傳遞給您必須提供的FilenameFilter對象。此FilenameFilter對象接受或拒絕每個文件。當您實現(xiàn) FilenameFilter接口時,您正在定義一個適配器類以與File.list()一起使用方法。由于此類的主體通常很短,因此很容易將適配器類定義為匿名類。以下是如何定義FilenameFilter類以僅列出名稱以.java 結(jié)尾的那些文件:

文件 f = 新文件("/src"); // 要列出的目錄
// 現(xiàn)在用一個 FilenameFilter 參數(shù)調(diào)用 list() 方法
// 定義并實例化 FilenameFilter 的匿名實現(xiàn)
// 作為方法調(diào)用表達式的一部分。
String[] filelist = f.list(new FilenameFilter() {
  public boolean accept(File f, String s) { return s.endsWith(".java"); }
}); // 不要忘記結(jié)束方法調(diào)用的括號和分號!

如您所見,定義匿名類和創(chuàng)建該類實例的語法使用new關(guān)鍵字,后跟類名和花括號中的類主體定義。如果new關(guān)鍵字后面的名稱是類的名稱,則匿名類是命名類的子類。如果new后面的名稱指定了一個接口,如前兩個示例所示,匿名類將實現(xiàn)該接口并擴展Object。該語法不包括任何指定 擴展子句、 實現(xiàn)子句或類名稱的方法。

因為匿名類沒有名稱,所以不可能在類主體中為它定義構(gòu)造函數(shù)。這是對匿名類的基本限制之一。您在匿名類定義中超類名稱后的括號中指定的任何參數(shù)都隱式傳遞給超類構(gòu)造函數(shù)。匿名類通常用于子類化不帶任何構(gòu)造函數(shù)參數(shù)的簡單類,因此匿名類定義語法中的括號通常為空。在前面的示例中,每個匿名類都實現(xiàn)了一個接口并擴展了Object。由于Object()構(gòu)造函數(shù)不帶參數(shù),因此這些示例中的括號為空。

匿名類的特點

關(guān)于匿名類的最優(yōu)雅的事情之一是它們允許您在需要的地方準確地定義一次性類。此外,匿名類的語法簡潔,可以減少代碼中的混亂。

匿名類的限制

因為匿名類只是本地類的一種,所以匿名類和本地類具有相同的限制。匿名類不能定義任何靜態(tài)字段、方法或類,靜態(tài)最終 常量除外。接口不能匿名定義,因為沒有名字就無法實現(xiàn)接口。此外,與本地類一樣,匿名類不能是 public、private、 protected或static。

由于匿名類沒有名稱,因此不可能為匿名類定義構(gòu)造函數(shù)。如果您的類需要構(gòu)造函數(shù),則必須改用本地類。但是,您通常可以使用實例初始值設(shè)定項來替代構(gòu)造函數(shù)。事實上,正是出于這個目的,將實例初始化程序引入了該語言。

定義匿名類的語法結(jié)合了定義和實例化。因此,如果每次執(zhí)行包含塊時都需要創(chuàng)建該類的多個實例,則使用匿名類而不是本地類是不合適的。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲区精品久久一区二区三区 | 日韩高清成人 | 四虎在线永久精品高清 | 国产自产拍精品视频免费看 | 色网站在线观看 | 日韩欧美第一区二区三区 | 欧美成人精品不卡视频在线观看 | 成年女人看片免费视频频 | 久热伊人| 夜间福利影院 | 亚洲国产乱 | 欧美亚洲激情 | 狠狠干夜夜爽 | 久久r视频 | 亚洲第99页| 国产午夜视频在线观看第四页 | 精品国产免费一区二区三区五区 | 国产精自产拍久久久久久 | 四虎影视地址 | 久久久国产这里有的是精品 | 另类综合视频 | 香蕉午夜视频 | 亚洲小色网 | 人人爱人人做 | 色欧美在线| 成人性色生活片免费看爆迷你毛片 | 四虎网站最新 | 亚洲综合第一欧美日韩中文 | 中国女人内谢59xxxxx | 毛片在线免费视频 | 青草免费免费观看视频在线 | 午夜论坛 | 亚洲一级毛片 | 天天舔天天干 | 伊人久久综合影院首页 | 国产精品久久久久尤物 | 亚洲一区二区三区网站 | 久久国产高清一区二区三区 | 69做爰视频在线观看 | 九九福利视频 | 福利观看|