溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JBuilder2005實(shí)現(xiàn)重構(gòu)之升級(jí)到JDK5.0的示例分析

發(fā)布時(shí)間:2021-11-20 15:35:47 來源:億速云 閱讀:135 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)JBuilder2005實(shí)現(xiàn)重構(gòu)之升級(jí)到JDK5.0的示例分析的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。

想把Jbuilder X 下的jdk換成 1.6  ,結(jié)果出現(xiàn)錯(cuò)誤,不支持如下的寫法

ArrayListlist=new ArrayList();

在網(wǎng)上一查,結(jié)果發(fā)現(xiàn)要修給 Project->Project Properties...->Build->在Java設(shè)置頁(yè),將Target VM設(shè)置 Java 2 SDK,v 5.0 and later。

但是我的Jbuilder X  里面沒有這一選項(xiàng)設(shè)置,Jbuilder 下升級(jí)jdk 沒有成功

現(xiàn)將JBuilder2005實(shí)現(xiàn)重構(gòu)之升級(jí)到JDK5.0- - 轉(zhuǎn)載到此

JDK 5.0在語法上做許多重大的改進(jìn),雖然在低版本JDK中開發(fā)的源代碼幾乎可以不做任何修改就可直接運(yùn)行于JDK 5.0中。但還是有必須進(jìn)行版本升級(jí)的重構(gòu),這樣就可以應(yīng)用JDK 5.0的for和while循環(huán)、自動(dòng)裝/拆箱、泛型等改進(jìn)功能,在使代碼更加緊湊的同時(shí),使代碼性能得到優(yōu)化。所以JBuilder專門為低版本提升到JDK 5.0的程序提供了3個(gè)重構(gòu)功能,方便你無縫地實(shí)現(xiàn)升級(jí)。

  1、使工程基于JDK 5.0

  雖說JBuilder 2005支持JDK 5.0,但其默認(rèn)的JDK版本是1.4.2,要使工程的JDK版本為5.0,你必須安裝JDK 5.0,并在JBuilder下  進(jìn)行相應(yīng)的設(shè)置。關(guān)于JDK 5.0的詳細(xì)設(shè)置我們不作過多的描述,簡(jiǎn)而言之,它主要包括以下的步驟:

  1) 安裝JDK 5.0(從http://java.sun.com/j2se/1.5.0/download.jsp下載)。

  2) Tools->Configure->JDKs...通用指定JDK5.0的安裝路徑設(shè)置JDK。

  3) Project->Project Properties...->在Paths設(shè)置頁(yè),將JDK設(shè)置為JDK 5.0。

  4) Project->Project Properties...->Build->在Java設(shè)置頁(yè),將Language features:設(shè)置為Java 2 SDK,V 5.0(generics enabled),將Target VM設(shè)置為Java 2 SDK,v 5.0 and later。

  只有將工程的JDK版本設(shè)置為JDK 5.0,才可以進(jìn)行有關(guān)JDK 5.0的代碼重構(gòu)。

  2、優(yōu)化循環(huán)

  JDK 5.0引入了更高效的循環(huán),稱之為JDK 5.0樣式的循環(huán),包括:

  .數(shù)組遍歷

  .List遍歷

  .Iterator的for循環(huán)

  .Iterator的while循環(huán)

  JBuilder提供了將低版本JDK對(duì)應(yīng)的循環(huán)代碼轉(zhuǎn)換這JDK5.0循環(huán)風(fēng)格的重構(gòu)方法,我們通過一個(gè)數(shù)組遍歷的重構(gòu)對(duì)此做說明,請(qǐng)看下面的低版本JDK循環(huán)代碼:

  代碼清單 11 低版本循環(huán)樣式

1. public static void arrayLoopRefactoring()
2. {
3.  int[] myArray = {1 , 2 , 3 , 4} ;
4.  for(int x = 0 ; x < myArray.length ; x++) {
5.   System.out.println(myArray[x]) ;
6.  }
7. }

  將光標(biāo)移到第4行的for(int x = 0 ; x < myArray.length ; x++) 中間:Ctrl+Shift+R->Introduce Foreach調(diào)出循環(huán)重構(gòu)對(duì)話框:

           
                  圖 22 循環(huán)重構(gòu)對(duì)話框

  在Loop variable name中為數(shù)組循環(huán)臨時(shí)變量指定一個(gè)變量名,這里我們?cè)O(shè)置為item,按OK完成重構(gòu),JBuilder生成JDK 5.0風(fēng)格循環(huán)代碼,如下所示:

  代碼清單 12 JDK 5.0樣式循環(huán)

1. public static void arrayLoopRefactoring()
2. {
3.  int[] myArray = {1 , 2 , 3 , 4} ;
4.  for(int item : myArray) {
5.   System.out.println(item) ;
6.  }
7. }
   
 


  3、自動(dòng)裝/拆箱

  每個(gè)基本數(shù)據(jù)類型如double、int都有對(duì)應(yīng)的封裝類Double、Integer,在低版本的JDK中,需要一些無聊的代碼完成基本數(shù)據(jù)類型到對(duì)應(yīng)封裝類的轉(zhuǎn)換。JDK 5.0的自動(dòng)裝/拆箱特性可以自動(dòng)完成這種轉(zhuǎn)換,使代碼更加簡(jiǎn)潔,來看下面未用自動(dòng)裝/拆箱的代碼:

  代碼清單 13 未使用自動(dòng)裝/拆箱的代碼

1. package myrefactor ;
2. public class Jdk5
3. {
4. ...
5. public static void autoBoxingPreliminary(Integer intObject)
6. {
7. System.out.println(intObject) ;
8. }
9.
10. public static void autoBoxingRefactoring()
11. {
12. autoBoxingPreliminary(new Integer(8)) ;
13. }
14. ...
15. }

  第5~8行定義的autoBoxingPreliminary()方法需要一個(gè)Integer的入?yún)?,autoBoxingRefactoring()在第12行老老實(shí)實(shí)滿足了這種要求。JBuilder提供了一個(gè)非常方便進(jìn)行自動(dòng)裝/拆箱重構(gòu)的方法,打開需要做此重構(gòu)的類,在編輯器的任何地方:Ctrl+Shift+R->Introduce Auto(un)boxing,JBuilder搜索當(dāng)前Class文件需要自動(dòng)裝/拆箱的地方,一并重構(gòu)。如上面的代碼段進(jìn)行自動(dòng)裝/拆箱重構(gòu)后,將調(diào)用為:

  代碼清單 14 自動(dòng)裝/拆箱重構(gòu)后的代碼

1. package myrefactor ;
2. public class Jdk5
3. {
4.  ...
5.  public static void autoBoxingPreliminary(Integer intObject)
6.  {
7.   System.out.println(intObject) ;
8.  }
9.
10.  public static void autoBoxingRefactoring()
11.  {
12.   autoBoxingPreliminary(8) ;
13.  }
14.  ...
15. }

  第12行直接傳入8而非new Integer(8),代碼工整了許多。

  4、非泛型轉(zhuǎn)泛型

  在低版本中,集合中的對(duì)象在使用前需要進(jìn)行顯示的類型轉(zhuǎn)換,如String s = (String)iter.next(),JDK 5.0引入了泛型的概念,加入了編譯期類型安全檢查,取消了強(qiáng)制類型轉(zhuǎn)換,節(jié)省了代碼,下面是大家熟悉的傳統(tǒng)的List操作代碼:

  代碼清單 15 非泛型的代碼

1. public static void genericsArrayList()
2. {
3.  List list = new ArrayList() ;
4.  list.add(0 , new Integer(23)) ;
5.  int total = ( (Integer) list.get(0)).intValue() ;
6.  System.out.println(total) ;
7. }

  將光標(biāo)移到第3行(即集合定義的代碼行):Ctrl+Shift+R->Introduce Generics調(diào)出泛型重構(gòu)對(duì)話框:

           
                   圖 23 泛型重構(gòu)對(duì)話框

  在Type Argument中指定一個(gè)數(shù)據(jù)類型,JBuilder已經(jīng)通過分析代碼默認(rèn)了最適合的數(shù)據(jù)類型,一般情況下無需調(diào)整。按OK后完成泛型的代碼重構(gòu):

  代碼清單 泛型的代碼

1. public static void genericsArrayList()
2. {
3.  List list = new ArrayList () ;
4.  list.add(0 , new Integer(23)) ;
5.  int total = (list.get(0)).intValue() ;
6.  System.out.println(total) ;
7. }

  注意第3行和第5行代碼的變化。也許有人會(huì)指出第4行應(yīng)該調(diào)整為list.add(23)才對(duì)啊?是的,只需要你調(diào)用前一小節(jié)的自動(dòng)裝/拆箱重構(gòu)就可以完成這

感謝各位的閱讀!關(guān)于“JBuilder2005實(shí)現(xiàn)重構(gòu)之升級(jí)到JDK5.0的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI