枚举类
枚举是一种特殊的类,里面只包含特定的对象
自定义类枚举
- 不提供set方法,因为枚举值只读
- 对枚举的属性使用final + static共同修饰,实现底层优化(不加载类,可以通过类名访问)
代码示范:
class Season {
private final String name;
private final String desc;
public static final Season SPRING = new Season("春天", "温暖");
public static final Season SUMMER = new Season("夏天", "炎热");
public static final Season AUTUMN = new Season("秋天", "凉爽");
public static final Season WINNER = new Season("冬天", "寒冷");
// 构造器私有化,防止外部直接new
private Season(String name, String desc) {
this.desc = desc;
this.name = name;
}
public String getName() {
return name;
}
public String getDesc() {
return desc;
}
}
System.out.println(Season.SPRING);
关键字枚举
enum Season2 {
SPRING("春天", "温暖"),
SUMMER("夏天", "炎热"),
AUTUMN("秋天", "凉爽"),
WINNER("冬天", "寒冷");
private String name;
private String desc;
private Season2(String name, String desc) {
this.name = name;
this.desc = desc;
}
}
常用枚举方法
- toString:返回对象类名,子类可以重写该方法
- name:返回当前对象(常量名,不可重写)
- ordanal:返回当前对象的位置号,从0开始
- values:返回当前枚举中所有常量,返回的是一个数组
- valueOf:将字符串转化为枚举常量,要求字符串必须为已有的常量名,否则报异常(其实相当于查找某个常量)
- compareTo:对比两个枚举常量
使用enum实现接口
使用enum关键字后,就不能再继承其他类了,因为enum隐式继承了Enuum类。
enum类可以实现接口,代码示范
interface Test {
public void study();
}
enum Study implements Test {
STUDY,STUDY2;
public void study() {
System.out.println("study...");
}
}
注解
注解(Annotation),也被称为元数据,用于修饰包,类,方法,属性,构造器,局部变量等数据。
和注释一下,不影响程序逻辑,但注解可以被编译或者运行,相当于嵌入在代码中的补充信息。
注解有三种
- @Override:限定用在子类的方法中,且这个方法在父类必须存在(父类不存在此方法将报错),表示重写父类方法。
- @Deprecated:用于表示某个程序元素(类,方法等)已过时。只是告诉用户和编译器这个方法已经过时了,不代表不能用。可以修饰,方法,类,属性,包,参数等。通常用于版本升级过度。
- @SuppressWarnings:抑制编译警告。类似于js当中disable-next-line。可以修饰类, 方法,属性等
代码示范:
@Deprecated
class Test {
}