学习笔记07 - java枚举类与注解
枚举类Enum
类的对象是有限个的,确定的 需要定义一组常量时,建议使用枚举类 若枚举类只有一个对象,则可以作为一种单例模式的实现方式
如何定义枚举类
①jdk 5.0之前
1.声明对象的属性:用private final 修饰 2.私有化构造器,给对象属性初始化 3.提供当前枚举类的多个对象:public static final XXX = new xxx(); 4.可以提供get、set、toString方法
jdk 5.0之后
使用enum关键字定义枚举类【默认继承于java.lang.Enum类】 0.提供当前枚举类的对象,多个对象之间用“,”隔开,最后以“;”结束 1.声明对象的属性:用private final 修饰 2.私有化构造器,给对象属性初始化 4.可以提供get、set、toString方法
Enum类的常用方法
使用enum关键字定义枚举类实现接口
①实现接口,在enum类中实现抽象方法 ②可以让枚举类的每个对象分别去实现接口中的抽象方法
注解Annotation
使用
例1:生产文档相关的注解 例2:在编译时进行格式检查(内置的三个基本注解) @Override @Deprecated @SuppressWarnings(抑制编译器警告) 例3:跟踪代码依赖性,实现替代配置文件功能
自定义注解
可以参照@SuppressWarnings进行自定义,通常会指明@Retention、@Target 没有成员表明是标识作用
4个元注解
@Retention 指定该Annotation的生命周期【SOURCE/CLASS(默认)/RUNTIME】 只有声明为RUNTIME的注解才能通过反射获取
@Target 指定该Annotation可以修饰哪些程序元素 【TYPE/FIELD/METHOD/PARAMETER/CONSTRUCTOR/LOCAL_VARIABLE/ANNOTATION_TYPE/ PACKAGE/TYPE_PARAMETER/TYPE_USE】
@Documented 表示所修饰的Annotation在被javadoc解析时可以保留
@Inherited 修饰的Annotation将具有继承性,某类使用了该注解,其子类将自动具有该注解
jdk8新特性:可重复注解、类型注解
可重复注解 ①在MyAnnotation注解上声明@Repeatable,成员值为MyAnnotations.class ③public @interface MyAnnotations{ MyAnnotation[] value(); } ②Target和Retention等元注解要相同
类型注解 TYPE_PARAMETER 能修饰类型变量,如泛型类型 TYPE_USE 修饰任何类型
通过反射获取注解信息
待补充