国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

匿名內部類構造函數(shù)分析

2019-11-14 15:09:27
字體:
來源:轉載
供稿:網(wǎng)友

先看看下面的代碼能不能編譯通過:

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

}

 

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

ArrayList對象,那么l2、l3是什么呢?

l2是一個匿名類內部類對象,繼承ArrayList;

l3語句有些古怪,帶了兩個大括號,其實我們這樣寫就會明白了,這也是一個匿名內部類的定義,它的代碼類似如下:

class Sub extends ArrayList {

{

//初始化代碼塊

}

}

List l3 = new Sub();

 

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

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

 

匿名內部類雖然可以用一個初始化代碼塊來充當構造函數(shù),但其構造函數(shù)還是進行了特殊的處理,它在初始化時直接調用父類的同參構造函數(shù),然后在調用自己的代碼塊,例如:

List l5 = new ArrayList(5){

{

System.out.println("我是匿名內部類");

}

};

等價于:

 

class Sub extends ArrayList{

{

System.out.println("我是匿名內部類");

}

Sub(int num){

super(num);

}

}

List l5 = new Sub(5);


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 九龙县| 内江市| 县级市| 库车县| 沙洋县| 当阳市| 福海县| 三穗县| 双流县| 宝山区| 怀柔区| 寿光市| 太原市| 安多县| 咸丰县| 中卫市| 隆回县| 梅州市| 九龙坡区| 永嘉县| 司法| 陆河县| 大兴区| 云和县| 达日县| 兖州市| 忻州市| 揭阳市| 乌兰县| 航空| 梅河口市| 绵阳市| 沁阳市| 新津县| 湘阴县| 天祝| 枣庄市| 贞丰县| 盐山县| 来凤县| 尉犁县|