首页 >> 读书频道 >> 电脑 >> JBuilder2005实现重构之升级到JDK5.0
 
· 可扩展的Java应用程序
· Java咖啡馆(8)——
· Java咖啡馆(7)——
· Web Service安
· J2ME简单吗?
· Flash Lite V
· Java实现类MSN、Q
· J2EE应用程序中SQL
· Java的一些编码基础
· 在PWS上安装php-4
· Java程序中用JFre
· 轻量级的代码生成方案选择
 
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

JBuilder2005实现重构之升级到JDK5.0


查看有无更新版本

关键字:Java 2006-9-20

 

 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(从http://java.sun.com/j2se/1.5.0/download.jsp下载)。

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.  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)才对啊?是的,只需要你调用前一小节的自动装/拆箱重构就可以完成这样的转换了。

JBuilder2005实现重构之升级到JDK5.0

[ 1 ]
JBuilder2005实现重构之升级到JDK5.0 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑