java 如何定义enum
定义枚举(Enum)的基本语法
在Java中,枚举是一种特殊的类,用于表示一组固定的常量。定义枚举使用enum关键字,后跟枚举名称和大括号内的枚举常量列表。
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY
}
枚举的属性和方法
枚举可以包含属性和方法,类似于普通类。每个枚举常量可以有自己的属性和行为。
public enum Planet {
MERCURY(3.303e+23, 2.4397e6),
VENUS(4.869e+24, 6.0518e6),
EARTH(5.976e+24, 6.37814e6);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
public double getMass() {
return mass;
}
public double getRadius() {
return radius;
}
}
枚举的构造函数
枚举可以定义构造函数,但必须是私有的(默认即为私有)。枚举常量在定义时会调用对应的构造函数。

public enum Color {
RED("#FF0000"),
GREEN("#00FF00"),
BLUE("#0000FF");
private String hexCode;
private Color(String hexCode) {
this.hexCode = hexCode;
}
public String getHexCode() {
return hexCode;
}
}
枚举的抽象方法
枚举可以包含抽象方法,每个枚举常量必须实现该方法。
public enum Operation {
PLUS {
public double apply(double x, double y) {
return x + y;
}
},
MINUS {
public double apply(double x, double y) {
return x - y;
}
};
public abstract double apply(double x, double y);
}
枚举的常用方法
枚举提供了一些内置方法,如values()和valueOf()。

Day[] days = Day.values(); // 返回所有枚举常量
Day monday = Day.valueOf("MONDAY"); // 根据名称获取枚举常量
枚举实现接口
枚举可以实现接口,为所有枚举常量提供统一的行为。
public interface Displayable {
void display();
}
public enum Status implements Displayable {
ACTIVE {
public void display() {
System.out.println("Active status");
}
},
INACTIVE {
public void display() {
System.out.println("Inactive status");
}
};
}
枚举的比较
枚举常量可以使用==进行比较,因为每个枚举常量都是单例。
Day today = Day.MONDAY;
if (today == Day.MONDAY) {
System.out.println("Today is Monday");
}
枚举的序列化
枚举默认是可序列化的,不需要显式实现Serializable接口。枚举的序列化机制保证了反序列化时不会创建新的实例。






