日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

局部内部类和匿名内部类的对比

發(fā)布時(shí)間:2023/12/20 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 局部内部类和匿名内部类的对比 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

創(chuàng)建內(nèi)部類(lèi)的典型的方式是在一個(gè)方法體的里面創(chuàng)建,局部?jī)?nèi)部類(lèi)不能有訪問(wèn)說(shuō)明符,因?yàn)樗皇峭鈬?lèi)的一部分,但是它可以訪問(wèn)當(dāng)前代碼塊內(nèi)的常量,以及此外圍類(lèi)的所有成員。下面的例子對(duì)局部?jī)?nèi)部類(lèi)與匿名內(nèi)部類(lèi)的創(chuàng)建進(jìn)行了比較。

具體代碼實(shí)現(xiàn):

1 package thinking.in.java.demo; 2 3 //定義一個(gè)接口 4 interface Counter { 5 int next(); 6 } 7 8 // 主類(lèi)LocalInnerClass 9 public class LocalInnerClass { 10 // 定義一個(gè)計(jì)數(shù)標(biāo)記count; 11 private int count = 0; 12 13 // 使用局部?jī)?nèi)部類(lèi) 14 Counter getCounter(final String name) { 15 class LocalCounter implements Counter { 16 public LocalCounter() { 17 System.out.println("LocalCount()"); 18 } 19 20 public int next() { 21 System.out.print(name+":"); 22 return count++; 23 } 24 } 25 // 局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi)最大的不同之處:局部?jī)?nèi)部類(lèi)可以返回不止一個(gè)內(nèi)部類(lèi)的對(duì)象 26 // 與下面的匿名內(nèi)部類(lèi)的代碼形成鮮明對(duì)比 27 return new LocalCounter(); 28 } 29 30 // 使用匿名內(nèi)部類(lèi) 31 Counter getCounter2(final String name) { 32 return new Counter() { 33 { 34 System.out.println("Counter"); 35 } 36 37 @Override 38 public int next() { 39 System.out.print(name+":"); 40 return count++; 41 } 42 }; 43 } 44 45 /** 46 * @param args 47 */ 48 public static void main(String[] args) { 49 LocalInnerClass lic = new LocalInnerClass(); 50 // 局部?jī)?nèi)部類(lèi) 51 Counter c1 = lic.getCounter("Local inner"); 52 // 匿名內(nèi)部類(lèi) 53 Counter c2 = lic.getCounter2("Anonymous inner"); 54 for (int i = 0; i < 5; i++) { 55 System.out.println(c1.next()); 56 } 57 for (int j = 0; j < 5; j++) { 58 System.out.println(c2.next()); 59 } 60 } 61 62 }

運(yùn)行結(jié)果:

LocalCount() Counter Local inner:0 Local inner:1 Local inner:2 Local inner:3 Local inner:4 Anonymous inner:5 Anonymous inner:6 Anonymous inner:7 Anonymous inner:8 Anonymous inner:9

在代碼中,Counter返回的是序列中的下一個(gè)值。我們分別使用局部?jī)?nèi)部類(lèi)和匿名內(nèi)部類(lèi)是實(shí)現(xiàn)了這個(gè)功能,它們具有相同的行為和方法。既然局部?jī)?nèi)部類(lèi)的名字在方法外是不可見(jiàn)的,那為什么我們?nèi)匀皇褂镁植績(jī)?nèi)部類(lèi)而不是匿名內(nèi)部類(lèi)呢?唯一的理由是:我們需要一個(gè)已經(jīng)命名的構(gòu)造器,或者需要重載構(gòu)造器,而匿名內(nèi)部類(lèi)只能用于實(shí)例的初始化,所以使用局部?jī)?nèi)部類(lèi)而不使用匿名內(nèi)部類(lèi)的另一個(gè)理由是,需要不止一個(gè)內(nèi)部類(lèi)對(duì)象。

轉(zhuǎn)載于:https://www.cnblogs.com/ysw-go/p/5430218.html

總結(jié)

以上是生活随笔為你收集整理的局部内部类和匿名内部类的对比的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。