Java枚举中的抽象方法及其实现示例

ChatGPT4o 使用 ChatGPT 4o 回答

问题:

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));
        }
    }
}

在这个示例中:

  1. Operation 枚举定义了四个常量:PLUSMINUSTIMESDIVIDE
  2. 每个枚举常量都实现了一个抽象方法 apply,该方法接受两个 double 类型的参数并返回一个 double 类型的结果。
  3. main 方法中,我们遍历了 Operation 枚举的所有常量,并调用了每个常量的 apply 方法。

通过这种方式,你可以在枚举中定义行为,并为每个枚举常量提供不同的实现。这使得枚举不仅仅是一个简单的常量集合,而是一个功能强大的类型。