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 方法来提供自定义的字符串表示。
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