枚举类
枚举类的使用
类的对象只有有限个, 确定的. 例如:
- 星期: 一, 二, 三, 四, 五, 六, 日
- 性别: 男, 女
当需要定义一组常量时, 强烈建议使用枚举类
如果枚举类中只有一个常量, 则可以作为单例模式的一种实现方式
定义枚举类
自定义枚举类
在Java5.0之前, 需要自定义枚举类
public class Season {
// 提供枚举类的私有属性
private final String seasonName;
private final String seasonDesc;
// 私有化构造器
private Season(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
// 提供静态的枚举类对象
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 WINTER = new Season("冬", "冷");
}
enum定义枚举类
在Java5.0之后, 提供了enum关键字. 使用enum关键字定义枚举类时, 默认继承Enum类.
enum Period {
// 枚举类中需要首先声明定义的常量(类中可选项)
// 常量之间用逗号隔开, 最后一个使用分号
SPRING("春", "冷"),
SUMMER("夏", "热"),
AUTUMN("秋", "爽"),
WINTER("冬", "冷");
private final String seasonName;
private final String seasonDesc;
private Period(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
}
枚举类实现接口
可以在枚举类中实现接口方法, 达到统一一致的目的
也可以在枚举类对象中分别实现接口方法, 达到个性化定制的目的
interface Info {
void publicShow();
void personShow();
}
//使用enum关键字定义枚举类, 默认继承Enum类
enum Period implements Info {
// 枚举类中需要首先声明定义的常量(类中可选项)
// 常量之间用逗号隔开, 最后一个使用分号
SPRING("春", "冷") {
@Override
public void personShow() {
System.out.println("春天在哪里");
}
},
SUMMER("夏", "热") {
@Override
public void personShow() {
System.out.println("宁夏");
}
},
AUTUMN("秋", "爽") {
@Override
public void personShow() {
System.out.println("秋天不回来");
}
},
WINTER("冬", "冷") {
@Override
public void personShow() {
System.out.println("大约在冬季");
}
};
private final String seasonName;
private final String seasonDesc;
private Period(String seasonName, String seasonDesc) {
this.seasonName = seasonName;
this.seasonDesc = seasonDesc;
}
@Override
public void publicShow() {
System.out.println("这是一个万物复苏的季节");
}
}
注解
注解, 即元数据(Metadata)