JDK-1.5_新特性

JDK-1.5_新特性

ID:37511863

大小:59.00 KB

页数:15页

时间:2019-05-24

JDK-1.5_新特性_第1页
JDK-1.5_新特性_第2页
JDK-1.5_新特性_第3页
JDK-1.5_新特性_第4页
JDK-1.5_新特性_第5页
资源描述:

《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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。