3、自动装/拆箱
每个基本数据类型如double、int都有对应的封装类double、integer,在低版本的jdk中,需要一些无聊的代码完成基本数据类型到对应封装类的转换。jdk 5.0的自动装/拆箱特性可以自动完成这种转换,使代码更加简洁,来看下面未用自动装/拆箱的代码:
代码清单 13 未使用自动装/拆箱的代码
第5~8行定义的autoboxingpreliminary()方法需要一个integer的入参,autoboxingrefactoring()在第12行老老实实满足了这种要求。jbuilder提供了一个非常方便进行自动装/拆箱重构的方法,打开需要做此重构的类,在编辑器的任何地方:ctrl+shift+r->introduce auto(un)boxing,jbuilder搜索当前class文件需要自动装/拆箱的地方,一并重构。如上面的代码段进行自动装/拆箱重构后,将调用为:
代码清单 14 自动装/拆箱重构后的代码
第12行直接传入8而非new integer(8),代码工整了许多。
4、非泛型转泛型
在低版本中,集合中的对象在使用前需要进行显示的类型转换,如string s = (string)iter.next(),jdk 5.0引入了泛型的概念,加入了编译期类型安全检查,取消了强制类型转换,节省了代码,下面是大家熟悉的传统的list操作代码:
代码清单 15 非泛型的代码
将光标移到第3行(即集合定义的代码行):ctrl+shift+r->introduce generics调出泛型重构对话框:

图 23 泛型重构对话框
在type argument中指定一个数据类型,jbuilder已经通过分析代码默认了最适合的数据类型,一般情况下无需调整。按ok后完成泛型的代码重构:
代码清单 泛型的代码
注意第3行和第5行代码的变化。也许有人会指出第4行应该调整为list.add(23)才对啊?是的,只需要你调用前一小节的自动装/拆箱重构就可以完成这样的转换了。
每个基本数据类型如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)才对啊?是的,只需要你调用前一小节的自动装/拆箱重构就可以完成这样的转换了。
闽公网安备 35060202000074号