日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Java語法技巧之雙括弧初始化

譯者序:這是我在JavaIdioms上看到一個(gè)Java使用技巧。使用Java這么多年了,也還是頭一次看到,還很實(shí)用。別看這小技巧好像很簡(jiǎn)單,但保證你不會(huì)在任何一書Java教材上看到,因?yàn)樗皇且粋€(gè)真正的語法規(guī)范,而是一個(gè)語法的用法變種。小技巧還蘊(yùn)含著Java的深層知識(shí),就是身經(jīng)百戰(zhàn)的老手也不一定能說出其中奧妙。

成都創(chuàng)新互聯(lián)公司是一家專注于網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),王益網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:王益等地區(qū)。王益做網(wǎng)站價(jià)格咨詢:18982081108

翻譯正文:

由于Java語言的集合框架中(collections, 如list, map, set等)沒有提供任何簡(jiǎn)便的語法結(jié)構(gòu),這使得在建立常量集合時(shí)的工作非常繁索。每次建立時(shí)我們都要做:

◆定義一個(gè)臨時(shí)的集合類變量

◆建立一個(gè)空集合的實(shí)例,然后賦值給變量

◆將數(shù)據(jù)放入集合中

◆最后將集合做為參數(shù)傳遞給方法

例如,要將一個(gè)Set變量傳給一個(gè)方法:

 
 
 
  1. Set< String> validCodes = new HashSet< String>();  
  2. validCodes.add("XZ13s");  
  3. validCodes.add("AB21/X");  
  4. validCodes.add("YYLEX");  
  5. validCodes.add("AR2D");  
  6. removeProductsWithCodeIn(validCodes);  

也可以用靜態(tài)初始的方法

 
 
 
  1. private static final Set< String> validCodes = new HashSet< String>();  
  2. static {  
  3.        validCodes.add("XZ13s");  
  4.        validCodes.add("AB21/X");  
  5.        validCodes.add("YYLEX");  
  6.        validCodes.add("AR2D");  
  7. }  

其實(shí),還有簡(jiǎn)結(jié)的方法,我們可以用雙括弧語法(double-brace syntax)建立并初始化一個(gè)新的集合:

 
 
 
  1. private static final Set< String> VALID_CODES = new HashSet< String>() {{  
  2.        add("XZ13s");  
  3.        add("AB21/X");  
  4.        add("YYLEX");  
  5.        add("AR2D");  
  6. }};  

或者

 
 
 
  1. removeProductsWithCodeIn(new HashSet< String>() {{  
  2.        add("XZ13s");  
  3.        add("AB21/X");  
  4.        add("YYLEX");  
  5.        add("AR5E");  
  6. }});  

Java語法技巧:雙括弧的意義

第一層括弧 實(shí)際是定義了一個(gè)內(nèi)部匿名類 (Anonymous Inner Class),第二層括弧 實(shí)際上是一個(gè)實(shí)例初始化塊 (instance initializer block),這個(gè)塊在內(nèi)部匿名類構(gòu)造時(shí)被執(zhí)行。這個(gè)塊之所以被叫做“實(shí)例初始化塊”是因?yàn)樗鼈儽欢x在了一個(gè)類的實(shí)例范圍內(nèi)。這和“靜態(tài)初始化塊 (static initialzer)”不同,因?yàn)檫@種塊在定義時(shí)在括弧前使用了static關(guān)鍵字,因此它的和類在同一個(gè)范圍內(nèi)的,也就是說當(dāng)類加載時(shí)就會(huì)被執(zhí)行(詳情可參考Java語言規(guī)范)。實(shí)例初始化塊中可以使用其容器范圍內(nèi)的所有方法及變量,但特別需要注意的是實(shí)例初始化塊是在構(gòu)造器之前運(yùn)行的。

這種方法只適用于不是final的類,因?yàn)閒inal類是無法建立內(nèi)部匿名子類,好在集合類都沒有這個(gè)限制。因此,這種方法還可以被用來初始化其它任何對(duì)象,比如一個(gè)GUI對(duì)象:

 
 
 
  1. add(new JPanel() {{  
  2.        setLayout(...);  
  3.        setBorder(...);  
  4.        add(new JLabel(...));  
  5.        add(new JSpinner(...));  
  6. }});  
  7.  

這樣建立的內(nèi)部匿名類的實(shí)例中包函它容器對(duì)像的引用。如果串行化(serialization)這個(gè)集合同時(shí)也會(huì)串行化它的外部類。

以上就介紹了Java語法技巧之雙括弧初始化。本文來自Alan Gao的譯文,原文:《Java技巧之雙括弧初始化》


當(dāng)前題目:Java語法技巧之雙括弧初始化
URL標(biāo)題:http://m.5511xx.com/article/cdpeode.html