JDK5 新特性之一 泛型
1、在没有泛型之前,做强制类型转换后,在运行期间会报异常信息,java.lang.ClassCastException
2、在使用泛型之后,只要在编译期间没有出现问题,则运行期间就不会出现该异常信息
3、限制泛型类型的使用 extends 关键字,例如T entends List ,如果只是用T 默认为:T extends Object
在泛型中继承和实现都必须使用extends关键字
4、类型通配声明
使用<?>或<? extends Object>时,只能根据名称取得该对象的值,或移除该对象的值,不能给该对象重新赋值
原因是当一个类继承了Object,编译器根本不知道是哪个子类,如果把Object取出来,做强制转换就失去了泛型的意义
5、继承泛型类型,实现泛型接口
JDK5 新特性之二 增强for循环
1、简化目前的循环操作,模仿c#
2、缺点不能判断当前遍历到哪里
3、如果不使用泛型,则用一种类型去存放各种类型会出现问题
JDK5 新特性之三 自动置入/自动取出 装箱/拆箱
1、基本的数据类型自动转为包装类
2、Integer i1 = 100; Integer i2 = 100;
if(i1==i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
Integer i1 = 200; Integer i2 = 200;
if(i1==i2)
System.out.println("i1 == i2");
else
System.out.println("i1 != i2");
结果:-128~127之间比较的是primitive type int value:值,否则比较的是Integer type:内存地址
JDK5新特性之四 枚举
1、枚举的关键字enum,枚举用逗号分隔
2、定义枚举后,枚举中的每一个成员都是该枚举类型的一个实例(instance),他们预设为final,无法改变,也是static成员,也是public的,所以可以通过类型直接使用
3、定义一个enum本质上就是在定义一个类别,只不过很多细节都是由编译器完成,enum的作用就像class和interface
4、当使用enum来定义时,实质上定义出来的类型继承自java.lang.Enum类型,默认的继承了父类的方法
5、如果枚举中有方法的话,枚举中的变量需要分号结束
6、EnumSet枚举集合,提供了静态方法
7、EnumMap枚举集合(key,value),EnumMap将根据枚举的顺序来维护对象的排列顺序
JDK5新特性之五 静态导入
1、import static com.hy.common.Constants.COUNTRY;可以使用以上格式静态导入
2、过渡的使用静态导入,会降低代码的可读性
JDK5新特性之六 可变参数
1、程序员可以声明一个接受可变数目参数的方法,可变参数必须是方法声明中最后一个参数