最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

簡(jiǎn)單談?wù)刯ava中匿名內(nèi)部類構(gòu)造函數(shù)

 更新時(shí)間:2015年11月08日 09:37:54   投稿:hebedich  
這篇文章主要簡(jiǎn)單給我們介紹了java中匿名內(nèi)部類構(gòu)造函數(shù),并附上了簡(jiǎn)單的示例,有需要的小伙伴可以參考下。

先看看下面的代碼能不能編譯通過(guò):

public static void main(String[] args) {
List l1 = new ArrayList();
List l2 = new ArrayList(){};
List l3 = new ArrayList(){{}};
System.out.println(l1.getClass() == l2.getClass() );
System.out.println(l2.getClass() == l3.getClass() );
System.out.println(l1.getClass() == l3.getClass() );
}

答案是能通過(guò)編譯,輸出3個(gè)false。l1很容易理解,就是聲明了一個(gè)

ArrayList對(duì)象,那么l2、l3是什么呢?

l2是一個(gè)匿名類內(nèi)部類對(duì)象,繼承ArrayList;

l3語(yǔ)句有些古怪,帶了兩個(gè)大括號(hào),其實(shí)我們這樣寫(xiě)就會(huì)明白了,這也是一個(gè)匿名內(nèi)部類的定義,它的代碼類似如下:

class Sub extends ArrayList {
{
//初始化代碼塊
}
}
List l3 = new Sub();

看到了吧,就是多了一個(gè)初始化代碼塊而已,起到構(gòu)造函數(shù)的功能。當(dāng)然一個(gè)類中的構(gòu)造代碼塊可以有多個(gè),下面的代碼是可以編譯的:

List l4 = new ArrayList(){{}{}{}};

匿名內(nèi)部類雖然可以用一個(gè)初始化代碼塊來(lái)充當(dāng)構(gòu)造函數(shù),但其構(gòu)造函數(shù)還是進(jìn)行了特殊的處理,它在初始化時(shí)直接調(diào)用父類的同參構(gòu)造函數(shù),然后在調(diào)用自己的代碼塊,例如:

List l5 = new ArrayList(5){
{
System.out.println("我是匿名內(nèi)部類");
}
};

等價(jià)于:

class Sub extends ArrayList{
{
System.out.println("我是匿名內(nèi)部類");
}
Sub(int num){
super(num);
}
}
List l5 = new Sub(5);

我們來(lái)看段示例代碼

package testtest; 
 
public class Main { 
 
  public static void main(String[] args) { 
    InnerTest inner = new InnerTest(); 
    Test t = inner.get(3); 
    System.out.println(t.getI()); 
  } 
} 
 
class Test { 
 
  private int i; 
 
  public Test(int i) { 
    this.i = i; 
  } 
 
  public int getI() { 
    return i; 
  } 
} 
 
class InnerTest { 
 
  public Test get(int x) { 
    return new Test(x) { 
 
      @Override 
      public int getI() { 
        return super.getI() * 10; 
      } 
    }; 
  } 
} 

編譯之后得到4個(gè)class文件:Test.class,InnerTest.class,InnerTest$1.class以及Main.class。容易看出來(lái),Main.class是測(cè)試類的class文件,Test.class是超類Test的class文件,InnerTest.class是InnerTest 的class文件,最值得關(guān)注的就是匿名內(nèi)部類的class文件InnerTest$1.class。

相關(guān)文章

  • java.lang.IncompatibleClassChangeError異常的問(wèn)題解決

    java.lang.IncompatibleClassChangeError異常的問(wèn)題解決

    本文主要介紹了java.lang.IncompatibleClassChangeError異常的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Java手機(jī)號(hào)碼工具類示例詳解(判斷運(yùn)營(yíng)商、獲取歸屬地)

    Java手機(jī)號(hào)碼工具類示例詳解(判斷運(yùn)營(yíng)商、獲取歸屬地)

    這篇文章主要介紹了Java手機(jī)號(hào)碼工具類示例詳解,通過(guò)手機(jī)號(hào)碼來(lái)判斷運(yùn)營(yíng)商獲取歸屬地,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Java設(shè)計(jì)模式--適配器模式詳解

    Java設(shè)計(jì)模式--適配器模式詳解

    這篇文章主要介紹了java設(shè)計(jì)模式之適配器模式Adapter的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java Volatile應(yīng)用單例模式實(shí)現(xiàn)過(guò)程解析

    Java Volatile應(yīng)用單例模式實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Java Volatile應(yīng)用單例模式實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 熟練掌握J(rèn)ava8新特性之Stream API的全面應(yīng)用

    熟練掌握J(rèn)ava8新特性之Stream API的全面應(yīng)用

    Stream是Java8的一大亮點(diǎn),是對(duì)容器對(duì)象功能的增強(qiáng),它專注于對(duì)容器對(duì)象進(jìn)行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量數(shù)據(jù)操作。Stream API借助于同樣新出現(xiàn)的Lambda表達(dá)式,極大的提高編程效率和程序可讀性,感興趣的朋友快來(lái)看看吧
    2021-11-11
  • SpringBoot數(shù)據(jù)庫(kù)查詢超時(shí)配置詳解

    SpringBoot數(shù)據(jù)庫(kù)查詢超時(shí)配置詳解

    這篇文章主要介紹了SpringBoot數(shù)據(jù)庫(kù)查詢超時(shí)配置,超時(shí)配置可以避免長(zhǎng)時(shí)間占用數(shù)據(jù)庫(kù)連接,提高系統(tǒng)的響應(yīng)速度和吞吐量,還可以快速的反饋可以提升用戶體驗(yàn),避免用戶因長(zhǎng)時(shí)間等待而感到挫敗,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-11-11
  • spring狀態(tài)機(jī)模式使用小結(jié)

    spring狀態(tài)機(jī)模式使用小結(jié)

    說(shuō)起Spring狀態(tài)機(jī),大家很容易聯(lián)想到這個(gè)狀態(tài)機(jī)和設(shè)計(jì)模式中狀態(tài)模式的區(qū)別是啥呢?沒(méi)錯(cuò),Spring狀態(tài)機(jī)就是狀態(tài)模式的一種實(shí)現(xiàn),在介紹Spring狀態(tài)機(jī)之前,讓我們來(lái)看看設(shè)計(jì)模式中的狀態(tài)模式,需要的朋友可以參考下
    2024-04-04
  • idea版本更新安裝教程詳解

    idea版本更新安裝教程詳解

    idea的更新版本比較特殊,需要重新安裝一下,這篇文章給大家介紹idea版本更新安裝教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-11-11
  • Java基于TCP方式的二進(jìn)制文件傳輸

    Java基于TCP方式的二進(jìn)制文件傳輸

    這篇文章主要為大家介紹了Java基于TCP方式的二進(jìn)制文件傳輸,一個(gè)基于Java Socket協(xié)議之上文件傳輸?shù)耐暾纠?,基于TCP通信完成,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JDBC獲取數(shù)據(jù)庫(kù)連接的5種方式實(shí)例

    JDBC獲取數(shù)據(jù)庫(kù)連接的5種方式實(shí)例

    JDBC是一種用于執(zhí)行SQL語(yǔ)句的JavaAPI,為多種關(guān)系數(shù)據(jù)庫(kù)提供統(tǒng)一訪問(wèn),它由一組用Java語(yǔ)言編寫(xiě)的類和接口組成,提供了諸如查詢和更新數(shù)據(jù)庫(kù)中數(shù)據(jù)的方法,這篇文章主要給大家介紹了關(guān)于JDBC獲取數(shù)據(jù)庫(kù)連接的5種方式,需要的朋友可以參考下
    2022-06-06

最新評(píng)論

高青县| 喜德县| 若羌县| 长垣县| 南开区| 奇台县| 安义县| 桂林市| 云林县| 灵寿县| 武平县| 衡阳市| 旅游| 广东省| 延川县| 南华县| 中阳县| 宣化县| 临城县| 兴海县| 泾源县| 喜德县| 东光县| 始兴县| 荔浦县| 甘肃省| 南康市| 竹溪县| 四子王旗| 巴马| 应城市| 全州县| 新兴县| 扬州市| 尚志市| 思南县| 大宁县| 南阳市| 尼玛县| 文山县| 大兴区|