java 枚举抽象方法
在Java中,枚举(enum)不仅仅是一个简单的常量集合,它还可以包含方法、字段和构造函数。更有趣的是,枚举还可以包含抽象方法,并且每个枚举常量都可以提供该抽象方法的具体实现。
下面是一个示例,展示了如何在Java枚举中使用抽象方法:
public enum Operation {
PLUS {
@Override
public double apply(double x, double y) {
return x + y;
}
},
MINUS {
@Override
public double apply(double x, double y) {
return x - y;
}
},
TIMES {
@Override
public double apply(double x, double y) {
return x * y;
}
},
DIVIDE {
@Override
public double apply(double x, double y) {
if (y == 0) {
throw new ArithmeticException("Division by zero");
}
return x / y;
}
};
// 抽象方法,每个枚举常量都必须实现这个方法
public abstract double apply(double x, double y);
}
public class Main {
public static void main(String[] args) {
double x = 10;
double y = 5;
for (Operation op : Operation.values()) {
System.out.printf("%f %s %f = %f%n", x, op, y, op.apply(x, y));
}
}
}
在这个示例中:
Operation
枚举定义了四个常量:PLUS
、MINUS
、TIMES
和 DIVIDE
。apply
,该方法接受两个 double
类型的参数并返回一个 double
类型的结果。main
方法中,我们遍历了 Operation
枚举的所有常量,并调用了每个常量的 apply
方法。通过这种方式,你可以在枚举中定义行为,并为每个枚举常量提供不同的实现。这使得枚举不仅仅是一个简单的常量集合,而是一个功能强大的类型。