[2025.1.3 JavaSE学习]枚举类 && 注解补充
枚举类
一、手动实现
class Enum{
public static final MyClass ENUM1 = new MyClass(1);
public static final MyClass ENUM2 = new MyClass(2);
.....
}
- 此处的final + static,前者防止该引用被重新赋值,后者确保该实例属于类
二、enum关键字
enum MyEnum{
ENUM1(1,2),ENUM2(2,3),ENUM3(3,4), .... ,
ENUM4, ENUM5, ...... ;
......
private int num1;
private int num2;
private MyEnum(int num1, int num2){
this.num1 = num1;
this.num2 = num2;
}
}
- 这种实现方式,要将定义的常量对象写在最前面
- enum继承基类Enum类
- 代码中ENUM4、ENUM5是无参构造,可以不用写括号
- 子类中不能重写toString方法,调用System.out.println(ENUM1),输出的就是ENUM1(使用父类的toString方法)
- Java为单继承,使用enum后不可继承其他类
注解
注解类:查看源码是否是 public @interface XXX{} 的形式
- @Deprecated 表示一个某个元素已经过时,不推荐使用,但是仍然可以使用(在IDEA中会出现中划线的情况),系统升级过渡使用
- @SuppressWarnings({""}):在{""}中,可以选择自己想要抑制的warning信息
元注解:修饰注解的注解
- Retention:指定注解的作用范围,有SOURCE、CLASS、RUNTIME
- RetentionPolicy.SOURCE:编译器使用后,直接丢弃这种注解
- RetentionPolicy.CLASS(默认值):把注解记录保存在class文件中,运行java程序时,JVM不会保留注释
- RetentionPolicy.RUNTIME:把注解记录保存在class文件中,运行java程序时,JVM会保留注释,程序可以通过反射获取该注释
- Target:指定注解可以在哪些地方使用
- Documented:指定该注解是否会在javadoc中体现
- Inherited:子类会继承父类注解

浙公网安备 33010602011771号