Java 枚举(Enums)是 Java 中的一种特殊类,用于定义一组常量。使用枚举可以提高代码的可读性和易维护性,因为它提供了一种类型安全的方式来表示固定的常量集合。下面是关于 Java 枚举的一些实用技巧和示例,帮助您更好地理解和使用它们。
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),
MARS(6.421e+23, 3.3972e6),
JUPITER(1.9e+27, 7.1492e7),
SATURN(5.688e+26, 6.0268e7),
URANUS(8.686e+25, 2.5559e7),
NEPTUNE(1.024e+26, 2.4746e7);
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;
}
}
Day day = Day.MONDAY;
switch (day) {
case MONDAY:
System.out.println("Today is Monday.");
break;
case TUESDAY:
System.out.println("Today is Tuesday.");
break;
// 其他情况
default:
System.out.println("Other day.");
break;
}
Planet planet = Planet.EARTH;
System.out.println("Mass: " + planet.getMass());
System.out.println("Radius: " + planet.getRadius());
枚举可以包含抽象方法,每个枚举实例必须实现该方法。
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;
}
},
TIMES {
public double apply(double x, double y) {
return x * y;
}
},
DIVIDE {
public double apply(double x, double y) {
return x / y;
}
};
public abstract double apply(double x, double y);
}
// 使用枚举中的抽象方法
Operation op = Operation.PLUS;
double result = op.apply(3, 4); // 结果是 7.0
System.out.println("Result: " + result);
枚举可以实现接口,这样可以确保每个枚举实例实现接口的方法。
public interface Behaviour {
void action();
}
public enum Animal implements Behaviour {
DOG {
@Override
public void action() {
System.out.println("Barks");
}
},
CAT {
@Override
public void action() {
System.out.println("Meows");
}
},
BIRD {
@Override
public void action() {
System.out.println("Chirps");
}
}
}
// 使用实现了接口的枚举
Animal animal = Animal.DOG;
animal.action(); // 输出:Barks
枚举可以包含静态方法,例如,根据名称或索引查找枚举实例。
public enum Color {
RED, GREEN, BLUE;
public static Color getColor(String name) {
return Color.valueOf(name.toUpperCase());
}
}
// 使用静态方法
Color color = Color.getColor("red");
System.out.println(color); // 输出:RED
可以覆盖枚举类的 toString
方法来提供自定义的字符串表示。
public enum TrafficLight {
RED("Stop"),
GREEN("Go"),
YELLOW("Caution");
private final String action;
TrafficLight(String action) {
this.action = action;
}
@Override
public String toString() {
return action;
}
}
// 使用覆盖的 toString 方法
TrafficLight light = TrafficLight.RED;
System.out.println(light); // 输出:Stop
通过这些实用技巧和示例,您可以更好地理解和使用 Java 枚举,从而提高代码的可读性和易维护性。枚举不仅提供了一种定义常量的方式,还可以包含字段、方法和实现接口,使其成为一个功能强大的工具。
原文链接:codingdict.net