程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> JBuilder2005實現重構之升級到JDK5.02

JBuilder2005實現重構之升級到JDK5.02

編輯:JAVA編程入門知識
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.  Listlist = 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)才對啊?是的,只需要你調用前一小節的自動裝/拆箱重構就可以完成這樣的轉換了。
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved