欢迎来到天天文库
浏览记录
ID:37511863
大小:59.00 KB
页数:15页
时间:2019-05-24
《JDK-1.5_新特性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1、泛型(Generics) 泛型是JDK1.5中一个最“酷”的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。在JDK1.4中,创建雇员名字的清单(List)需要一个集合对象,像下面的语句: ListlistOfEmployeeName=newArrayList(); 在JDK1.5中,你将使用下面语句 ListlistOfEmployeeName=newArra
2、yList(); 最“酷”的是,如果你试图插入非string类型的值,你将在编译时发现并且修正这类问题。没有泛型,你会发现这样一个bug,当你的客户调用后会告诉你,你所编写的程序抛出ClassCastException异常而崩溃。 另外,当你从集合中得到一个元素时你无需进行强制转换。故原先为: StringemployeeName=((String)listOfEmployee.get(i)); 而下面的语句将比上面的更加简单: StringemployeeName=listOfEmp
3、loyee.get(i); 不清楚对象的类型而强制转换对象是不合理的,并且更重要的是,它将在运行时失败。假使用户无意间传入一个包含stringbuffers类型而非string类型的集合,那结果会怎样呢。在ListingA中,客户被要求传入一个编译器无法强制的strings类型集合。ListingB中显示了同样的方法使用泛型是如何实现的。 ListingA staticbooleancheckName(CollectionemployeeNameList,Stringname){ for(Iterato
4、ri=employeeNamList.iterator();i.hasNext();){ Strings=(String)i.next(); if(s.equals(name)){ returntrue; //printemployeenamehere...... } } returnfalse; } ListingB staticbooleancheckName(CollectionemployeeNameList,Stringname){ for(Iteratori=e
5、mployeeNamList.iterator();i.hasNext();){ if(i.next().equals(name)){ returntrue; //printemployeenamehere...... } } returnfalse; } 现在,通过方法签名可以清楚知道输入集合必须只能包含strings。如果客户试图传入一个包含stringbuffers的集合,程序将不会编译。同时注意,该方法不包含任何强制转换。它只需要短短一行,一旦你习惯泛型后,它也更加清晰。2、在JDK当前
6、版本下的For循环语法如下: voidprintAll(Collectionc){ for(Iteratori=c.iterator();i.hasNext();){ Employeeemp=(Employee)i.next(); System.out.println(emp.getName()); } } 现在,用增强的For语句实现相同方法: voidprintAll(Collectionc){ for(Objecto:c) System.out.println((TimerTask)o
7、).getName()); } 在这类For循环中,你应该将":"看成"in",所以,在该例中可以看成"forObjectoinc"。你可以发现这种For循环更具可读性。3、自动置入/自动取出(Autoboxing/unboxing) Java有基本数据类型,在这些基本数据类型周围又有包装类。通常,编程人员需要将一种类型转换成另一种。看看ListingC.中的代码片断。 ListingC publicclassEmployee{ privatestaticfinalIntegerCHILD=newI
8、nteger(0); publicstaticvoidmain(Stringargs[]){ //codeforaddingntoanInteger intn=10; Integerage=newInteger(30); IntegerageAfterTenYear=newInteger(age.intValue+10); } } 请注意,用于计算ageAfterTen
此文档下载收益归作者所有