网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.Java socket 入门编程实例.
.Java从何而来 为什么会如此火爆?.
.学习java需要知道的一些问题.
.JAVA文件加密器(收藏).
.关于Servlet.
.Workshop 控件和扩展:第2部.
.spring快速入门教程.
.在JAVA中连接Sybase数据库(例子).
.Java连接数据库实例.
.用 Java 反射构建更通用的业务委.
.用Java得到Excel中Formula的值.
.Turbine Development Kit HowTo .
.JAVA中的数组研究.
.Digester 解析 XML 文档 Sample.
.破解java Struts Web Applicatio.
.全面挖掘Java Excel API 使用方法.
.介绍NEC扩展API.
.化繁为简 用Spring改进J2EE编程(.
.Struts中用PlugIn扩展Hibernate的.
.双击Jar的启动方法.

探索JDK1.5高级编码特征

发表日期:2008-1-5


    本文中,我们将讨论几个在JDK1.5中新的语言特征,包括:

泛型(Generics)--为集合(collections)提供编译时类型安全,无需每刻从Collections取得一个对象就进行强制转换(cast)
增强的“for”循环(Enhanced For loop)--减少迭代器(iterator)的潜在错误(error-proneness)
自动置入/自动取出(Autoboxing/unboxing)--无需在基本类型(primitive types)(例如double)和包装类型(wrapper types)(例如Double)之间人工地进行转换。
类型安全的枚举(Typesafeenums)--提供类型安全枚举模式的各项好处。
静态导入(Static import)--无需在使用其他类的静态成员变量前缀其类名.这将使得代码更为简洁。
元数据(Metadata)--使编程人员避免编写样板化代码(boiler plate code),并提供机会进行宣告式程式设计(declarative programming)。


    让我们具体讨论每个新特性,并看一些例子。

    泛型(Generics)

    泛型是JDK1.5中一个最“酷”的特征。通过引入泛型,我们将获得编译时类型的安全和运行时更小地抛出ClassCastExceptions的可能。在JDK1.5中,你可以声明一个集合将接收/返回的对象的类型。在JDK1.4中,创建雇员名字的清单(List)需要一个集合对象,像下面的语句:

    List listOfEmployeeName = new ArrayList();

    在JDK1.5中,你将使用下面语句

    List listOfEmployeeName = new ArrayList();

    最“酷”的是,假如你试图插入非string类型的值,你将在编译时发现并且修正这类问题。没有泛型,你会发现这样一个bug,当你的客户调用后会告诉你,你所编写的程序抛出ClassCastException异常而崩溃。

    另外,当你从集合中得到一个元素时你无需进行强制转换。故原先为:

    String employeeName = ((String) listOfEmployee.get(i));

    而下面的语句将比上面的更加简单:

    String employeeName = listOfEmployee.get(i);

    不清楚对象的类型而强制转换对象是不合理的,并且更重要的是,它将在运行时失败。假使用户无意间传入一个包含string buffers类型而非string类型的集合,那结果会怎样呢。在Listing A中,客户被要求传入一个编译器无法强制的strings类型集合。Listing B中显示了同样的方法使用泛型是如何实现的。

    Listing A

    staticbooleancheckName(Collection employeeNameList, String name) {

    for (Iteratori = employeeNamList.iterator(); i.hasNext(); ) {

    String s = (String) i.next();

    if(s.equals(name)){

    return true;

    //print employee name here ......

    }

    }

    return false;

    }

 

    Listing B

    staticbooleancheckName(Collection employeeNameList, String name) {

    for (Iteratori = employeeNamList.iterator(); i.hasNext(); ) {

    if(i.next().equals(name)){


上一篇:java使用ant来编译 人气:1229
下一篇:Java模式设计之单例模式(一) 人气:914
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐