在枚举类型中使用枚举类型(包括方法)和构造函数。
枚举
枚举是一种类型(类或接口) ,它表示一个固定的值列表(您可以将其视为常量)。
public enum Volume {
HIGH, MEDIUM, LOW
}
- 枚举中的这些值是“常量”(它们是隐式的 public、 static 和 final) ,因此遵循了使用所有大写的约定
- 不能使new关键字来获得枚举的引用,而是直接获得引用
Volume level = Volume.LOW;
- 也可以从一个字符串中得到一个枚举
Volume level = Volume.valueOf("LOW");
- 获得特定类型的所有枚举
for(Volume v: Volume.values()) {
System.out.print(v.name() + ", ");
}
其返回一个枚举数组,其声明顺序与方法值相同
- 枚举类型不能extends类,因为所有枚举都隐式地从 java.lang.Enum 扩展。只能implement接口
public enum Volume implements AnInterface { ... }
- 在使用枚举类时,如果枚举重写了枚举类方法,则使用的是重写后的方法,且如果枚举类有抽象方法,则枚举必须要实现该抽象方法,否则编译报错
public enum Volume {
HIGH(100) {
@Override
public void printValue() {
System.out.println("** Highest value**");
}
@Override
public void printDescription() {
System.out.println("High Volume");
}
}, MEDIUM(50) {
@Override
public void printDescription() {
System.out.println("Medium Volume");
}
}, LOW(20) {
@Override
public void printDescription() {
System.out.println("Low Volume");
}
};
private int value;
private Volume(int value) {
this.value = value;
}
public void printValue() {
System.out.println(value);
}
public abstract void printDescription();
}
枚举是单例的
- 不能通过使用new创建枚举实例(因为构造函数是private)
- 当第一次引用枚举时,将创建枚举的实例
- enums 默认是线程安全的(这意味着在创建 enums 时不需要进行双重检查)
- 在大多数情况下,枚举是在 Java 中实现单例设计模式的最佳方式
Comments | 0 条评论