`

jdk1.5增加的新特性

    博客分类:
  • Java
 
阅读更多

 “JDK1.5”(开发代号猛虎)的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。

  下面我们简单介绍一下这些新特性。

  1.泛型(Generic)

  C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。

Collection<String> c = new ArrayList();
c.add(new Date());


  编译器会给出一个错误:

add(java.lang.String) in java.util.Collection<java.lang.String> cannot be applied to (java.util.Date)


  2.For-Each循环

  For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为:

void processAll(Collection c){
    for(Iterator i=c.iterator(); i.hasNext();){
        MyClass myObject = (MyClass)i.next();
        myObject.process();
    }
}


  使用For-Each循环,我们可以把代码改写成:

void processAll(Collection<MyClass> c){
    for (MyClass  myObject :c)
        myObject.process();
}


  这段代码要比上面清晰许多,并且避免了强制类型转换。

 3.自动装包/拆包(Autoboxing/unboxing)

  自动装包/拆包大大方便了基本类型数据和它们包装类地使用。

  自动装包:基本类型自动转为包装类.(int >> Integer)

  自动拆包:包装类自动转为基本类型.(Integer >> int)

  在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。

int a = 3;
Collection c = new ArrayList();
c.add(a);//自动转换成Integer.

Integer b = new Integer(2);
c.add(b + 2);

  这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.

  4.枚举(Enums)

  JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。
 
public enum Color
{
   Red,
   White,
   Blue
}

  然后可以这样来使用Color myColor = Color.Red.

  枚举类型还提供了两个有用的静态方法values()和valueOf(). 我们可以很方便地使用它们,例如

for (Color c : Color.values())
            System.out.println(c);

  5.可变参数(Varargs)

  可变参数使程序员可以声明一个接受可变数目参数的方法。注意,可变参数必须是函数声明中的最后一个参数。假设我们要写一个简单的方法打印一些对象,

util.write(obj1);
util.write(obj1,obj2);
util.write(obj1,obj2,obj3);

  在JDK1.5之前,我们可以用重载来实现,但是这样就需要写很多的重载函数,显得不是很有效。如果使用可变参数的话我们只需要一个函数就行了

public void write(Object... objs) {
   for (Object obj: objs)
      System.out.println(obj);
}

  在引入可变参数以后,Java的反射包也更加方便使用了。对于c.getMethod("test", new Object[0]).invoke(c.newInstance(), new Object[0])),现在我们可以这样写了c.getMethod("test").invoke(c.newInstance()),这样的代码比原来清楚了很多。 

  6.静态导入(Static Imports)

  要使用用静态成员(方法和变量)我们必须给出提供这个方法的类。使用静态导入可以使被导入类的所有静态变量和静态方法在当前类直接可见,使用这些静态成员无需再给出他们的类名。

import static java.lang.Math.*;
…….
r = sin(PI * 2); //无需再写r = Math.sin(Math.PI);

  不过,过度使用这个特性也会一定程度上降低代码地可读性。

分享到:
评论

相关推荐

    JDK 1.5新特性

    jdk1.5,jdk1.6,jdk1.7的新特性,增加了很多知识,也更新了以前一些比较复杂的运算

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    今天,JDK1.5終於內建泛型特性,不僅編譯器不再需要 任何外力(外掛附件)的幫助,整個 Java標準程式庫也被翻新(retrofit),許多 角落針對泛型做了改寫。 讓我們把帶有「參數化型別」(parameterized types)的 ...

    JDK5.0新特性 常量 、枚举、 for each、反射

    jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。

    JDK新特性.rar

    jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。

    JDK5.0新特性 反射、枚举.rar

    jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。

    JDK5.0 新特性

    JDK5.0新特性  因为,在1.5版本中,对一个整数进行包装,使之成为一个Integer对象(即包装,boxing),然后加入到一个ArrayList中的做法被认为是没有必要的,反之,解包(unboxing)的做法也是没有必要的,这样的...

    Java B安装指导及推荐教程

    JDK目前最新的版本為代號為Tiger的JDK 5.0版(JDK 1.5),自JDK1.2版之後的JDK工具組,由於相較於先前的版本增加了許多新的特性,因此冠上Java 2的字眼,稱為J2SDK(Java 2 SDK,Java 2 Software Development Kit),而...

    java编程宝典

    4.4 如何使用jdk8的新特性LocalDate和LocalDateTime 31 4.5 时间戳 32 6网络 33 Jsoup介绍: 34 Jsoup主要有以下功能: 34 Demo1:抓取校园网首页的新闻标题 35 //从目标页面下载所有图片到本地 36 7异常 45 2.Java...

    JAVA 2平台安全技术-结构,API设计和实现

    8.2 JDK 特性的改善 141 8.3 Java鉴别和许可服务 142 8.3.1 主题与主体 144 8.3.2 证件 144 8.3.3 可插入和可堆叠的鉴别 144 8.3.4 回调 147 8.3.5 访问控制 147 8.3.6 JAAS工具 149 8.4 小结 149 参考文献 151

    新版Android开发教程.rar

    特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • 集成的浏览器 基于开源的 WebKit 引擎 • 优化的图形库 包括定制的 2D 图形库, 3D 图形库基于 OpenGL ES ...

    java课程设计报告贪吃蛇游戏设计.doc

    Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再 被引用的对象所占据的存空间,使得程序员不用再为...

    dynamic-datasource-spring-boot-starter:springboot的动态数据源多数据源动态数据源主从分离读写分离分布式事务https:dynamic-datasource.com

    其支持Jdk 1.7 +,SpringBoot 1.4.x 1.5.x 2.xx。文件| 文献资料|特性支持数据源分组,适用于多种场景纯粹的多库读写分离一主多从混合模式。支持数据库敏感配置信息加密ENC()。支持每个数据库独立初始化表结构...

    Spring-Reference_zh_CN(Spring中文参考手册)

    2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的...

    JdbcTemplateTool.zip

    基于以上的一些不足之处,我建立了 JdbcTemplateTool 它有以下特性:把查询结果转换为PO列表,不需要调用BeanPropertyRowMapper传一条统计sql比如 aselect count(1) from table可以直接返回一个数字作为结果,不需要...

    Java开发技术大全 电子版

    1.5本章小结18 第2章Java语言基础19 2.1Java语言的特点19 2.2Java程序的构成21 2.3数据类 型23 2.3.1基本数据类型23 2.3.2常量25 2.3.3变量26 2.3.4整型数据27 .2.3.5浮点型数据29 2.3.6字符型数据30 ...

Global site tag (gtag.js) - Google Analytics