JBuilder2005實現重構之升級到JDK5.0- -轉載到此
今天想把Jbuilder X 下的jdk換成 1.6 ,結果出現錯誤,不支援如下的寫法
ArrayList
在網上一查,結果發現要修給 Project->Project Properties...->Build->在Java設定頁,將Target VM設定 Java 2 SDK,v 5.0 and later。
但是我的Jbuilder X 裡面沒有這一選項設定,Jbuilder 下升級jdk 沒有成功
現將JBuilder2005實現重構之升級到JDK5.0- - 轉載到此
JDK 5.0在語法上做許多重大的改進,雖然在低版本JDK中開發的原始碼幾乎可以不做任何修改就可直接執行於JDK 5.0中。但還是有必須進行版本升級的重構,這樣就可以應用JDK 5.0的for和while迴圈、自動裝/拆箱、泛型等改進功能,在使程式碼更加緊湊的同時,使程式碼效能得到最佳化。所以JBuilder專門為低版本提升到JDK 5.0的程式提供了3個重構功能,方便你無縫地實現升級。
1、使工程基於JDK 5.0
雖說JBuilder 2005支援JDK 5.0,但其預設的JDK版本是1.4.2,要使工程的JDK版本為5.0,你必須安裝JDK 5.0,並在JBuilder下 進行相應的設定。關於JDK 5.0的詳細設定我們不作過多的描述,簡而言之,它主要包括以下的步驟:
1) 安裝JDK 5.0(從下載)。
2) Tools->Configure->JDKs...通用指定JDK5.0的安裝路徑設定JDK。
3) Project->Project Properties...->在Paths設定頁,將JDK設定為JDK 5.0。
4) Project->Project Properties...->Build->在Java設定頁,將Language features:設定為Java 2 SDK,V 5.0(generics enabled),將Target VM設定為Java 2 SDK,v 5.0 and later。
只有將工程的JDK版本設定為JDK 5.0,才可以進行有關JDK 5.0的程式碼重構。
2、最佳化迴圈
JDK 5.0引入了更高效的迴圈,稱之為JDK 5.0樣式的迴圈,包括:
.陣列遍歷
.List遍歷
.Iterator的for迴圈
.Iterator的while迴圈
JBuilder提供了將低版本JDK對應的迴圈程式碼轉換這JDK5.0迴圈風格的重構方法,我們透過一個陣列遍歷的重構對此做說明,請看下面的低版本JDK迴圈程式碼:
程式碼清單 11 低版本迴圈樣式
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. }
將游標移到第4行的for(int x = 0 ; x < myArray.length ; x++) 中間:Ctrl+Shift+R->Introduce Foreach調出迴圈重構對話方塊:
圖 22 迴圈重構對話方塊
在Loop variable name中為陣列迴圈臨時變數指定一個變數名,這裡我們設定為item,按OK完成重構,JBuilder生成JDK 5.0風格迴圈程式碼,如下所示:
程式碼清單 12 JDK 5.0樣式迴圈
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、自動裝/拆箱
每個基本資料型別如double、int都有對應的封裝類Double、Integer,在低版本的JDK中,需要一些無聊的程式碼完成基本資料型別到對應封裝類的轉換。JDK 5.0的自動裝/拆箱特性可以自動完成這種轉換,使程式碼更加簡潔,來看下面未用自動裝/拆箱的程式碼:
程式碼清單 13 未使用自動裝/拆箱的程式碼
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()方法需要一個Integer的入參,autoBoxingRefactoring()在第12行老老實實滿足了這種要求。JBuilder提供了一個非常方便進行自動裝/拆箱重構的方法,開啟需要做此重構的類,在編輯器的任何地方:Ctrl+Shift+R->Introduce Auto(un)boxing,JBuilder搜尋當前Class檔案需要自動裝/拆箱的地方,一併重構。如上面的程式碼段進行自動裝/拆箱重構後,將呼叫為:
程式碼清單 14 自動裝/拆箱重構後的程式碼
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、非泛型轉泛型
在低版本中,集合中的物件在使用前需要進行顯示的型別轉換,如String s = (String)iter.next(),JDK 5.0引入了泛型的概念,加入了編譯期型別安全檢查,取消了強制型別轉換,節省了程式碼,下面是大家熟悉的傳統的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. }
將游標移到第3行(即集合定義的程式碼行):Ctrl+Shift+R->Introduce Generics調出泛型重構對話方塊:
圖 23 泛型重構對話方塊
在Type Argument中指定一個資料型別,JBuilder已經透過分析程式碼預設了最適合的資料型別,一般情況下無需調整。按OK後完成泛型的程式碼重構:
程式碼清單 泛型的程式碼
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行程式碼的變化。也許有人會指出第4行應該調整為list.add(23)才對啊?是的,只需要你呼叫前一小節的自動裝/拆箱重構就可以完成這
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8046846/viewspace-914554/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 10.2.0.1 升級到 10.2.0.4--轉載Oracle
- Golang不利於重構升級? - fasterthanliGolangAST
- nginx 版本升級 轉載Nginx
- 用JBuilder 2005實現重構之認識重構UI
- 用dbua實現oracle 9.2.0.8到10.2.0.1的升級Oracle
- 升級到Linux 2.4核心(轉)Linux
- nginx實現平滑升級Nginx
- (轉)Oracle 10.2.0.1 升級到 10.2.0.4Oracle
- RAC 資料庫升級 10.2.0.1.0 到 10.2.0.2.0 之升級catalog資料庫
- 雲幫(ACP)7月升級:重構負載均衡,優化後端元件功能負載優化後端元件
- [轉載]Linux/Mac go版本升級LinuxMacGo
- Zookeeper之Zookeeper底層客戶端架構實現原理(轉載)客戶端架構
- spring升級到3.1.1 hibernate升級到4備忘Spring
- AndroidStudio升級到3.1+之後,出現Java.util.NoSuchElementExceptionAndroidJavaException
- JAVA 實現《超級瑪麗升級版》遊戲Java遊戲
- 轉載:Ubuntu 升級 golang 版本完美步驟UbuntuGolang
- 網頁製作之從構思到實現網頁
- mongodb單機從3.2升級到4.0.4升級MongoDB
- 遺留系統如何升級,重構成CQRS的模式模式
- 如何實現OpenHarmony的OTA升級
- java實現“資料平滑升級”Java
- 物聯網裝置OTA軟體升級之:升級包下載過程之旅
- [轉載]在WinForm中使用Web Services 來實現 軟體 自動升級( Auto Update ) (C#)ORMWebC#
- 前端工程構建之談:gulp3要不要升級到Gulp4前端
- 探索Oracle之資料庫升級二 11.2.0.3升級到11.2.0.4完整步驟Oracle資料庫
- 資料庫的升級和降級[轉載wisdomone1 ]資料庫
- oracle 10 rac 升級 10.2.0.1升級到10.2.0.5Oracle
- oracle 之 安裝10.2.0.1 且 升級到 10.2.0.4Oracle
- (轉)手工升級資料庫10.1到10.2資料庫
- 從程式設計師升級到工程師 (轉)程式設計師工程師
- 升級RH9.0到2.6.5核心全過程(轉)
- 從ubuntu 6.06升級到6.10的方法(轉)Ubuntu
- 方便麵行業的轉型:通過網際網路思維實現升級(附下載)行業
- 重構升級後的FIDE 開發者工具,你用過嗎?IDE
- vue-demo-collection 基於Vue2.x重構升級Vue
- dubbo2升級到dubbo3實踐
- RAC升級11.2.0.1到11.2.0.4的實戰
- CentOS升級MySQL到5.5CentOSMySql