JDK1.5之后出现三大新特性,枚举、泛型、注解。
(一)枚 举
- 关键字:enum;
枚举本质是多例设计模式,虽然Java提供enum关键字,但枚举病史新结构,使用enum定义的枚举本质上相当于class定义的类,默认继承与Java.lang.ENUM父类。 - 枚举类对象声明必须放在首行;
(二)泛 型
- 定义是不会设置属性和方法的类型,使用时再定义( 用于解决程序中参数转换问题)
定义:
基本类定义:
class MyClass<T> { T value1; }
<T> (泛型标识):可以指代任何应用类型;
泛型方法:
class MyClass{ public <T> void testMethod(T t) { System.out.println(t); } }
泛型方法中的 <T>与泛型类<T>没有相应的联系,泛型方法始终以自己定义的类型为基准。
- 通配符:
?指代任意类型,作用于方法参数;
? extends 类:设置上限(作用于类和方法参数),作用于方法参数时,只能取得值,不能修改值;例如:? extends Number,表示只能够设置Number或其子类,例如:Integer、Double等;
? super 类:设计下限(作用于方法参数),用于方法参数时可以修改值;例如:? super String,表示只能够设置String及其父类Object。
泛型接口:
子类实现接口的方式有两种:继续保留泛型
class MessageImpl<T> implements IMessage<T>
声明泛型类型
class MessageImpl implements IMessage<String>
- 类型擦除:
泛型信息只存在于代码编程阶段,进入JVM之前,与泛型相关的信息都会被擦除 ;
在泛型类被类型擦除的时候,之前泛型类中的类型参数部分如果没有指定上限, 则会被转译成普通的 Object 类型,如果指定了上限 则类型参数就被替换成类型上限。
(三)注 解
准确覆写:@Override
如果方法被准确覆写,不会有编译错误,否则就会报错;过期处理:@Deprecated
作用于雷和方法上,表示不推荐用户使用,但可以正常使用。压制警告:@Suppresswarnings
- 自定义注解:(反射部分具体实现)