学习笔记07 - java枚举类与注解

文章目录

  • 枚举类Enum
    • 如何定义枚举类
      • ①jdk 5.0之前
      • jdk 5.0之后
    • Enum类的常用方法
    • 使用enum关键字定义枚举类实现接口
  • 注解Annotation
    • 使用
    • 自定义注解
    • 4个元注解
    • jdk8新特性:可重复注解、类型注解
    • 通过反射获取注解信息

枚举类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类的常用方法

学习笔记07 - java枚举类与注解_第1张图片

使用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 修饰任何类型

通过反射获取注解信息

待补充

你可能感兴趣的:(javase,java,开发语言,学习)