java - 为什么枚举要实现接口(interface)?

标签 java enums

我刚刚发现 Java 允许枚举实现接口(interface)。有什么好的用例?

最佳答案

这是一个示例(在 Effective Java 2nd Edition 中可以找到类似/更好的示例):

public interface Operator {
    int apply (int a, int b);
}

public enum SimpleOperators implements Operator {
    PLUS { 
        int apply(int a, int b) { return a + b; }
    },
    MINUS { 
        int apply(int a, int b) { return a - b; }
    };
}

public enum ComplexOperators implements Operator {
    // can't think of an example right now :-/
}

现在获取简单 + 复杂运算符的列表:

List<Operator> operators = new ArrayList<Operator>();

operators.addAll(Arrays.asList(SimpleOperators.values()));
operators.addAll(Arrays.asList(ComplexOperators.values()));

所以在这里你使用一个接口(interface)来模拟可扩展的枚举(如果不使用接口(interface)是不可能的)。

关于java - 为什么枚举要实现接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2709593/

相关文章:

java Quartz Scheduler cron 表达式,每过 30 分钟一刻钟

java - 我应该在 Tomcat 中使用哪个临时目录?

java - 小程序性能: loading all jars at startup or only when class is needed?

mysql - 自定义排序 SQL

java - 如何在java中返回枚举值

c++ - Boost Enum 256 元素限制

swift - Swift 中带有基于字符串的枚举的下标字典

Swift 枚举原始值 : not working with CGFloat = -1. 0

java - 从字节数组反序列化后 Xml 文档签名无效

java - 如何在 glassfish 的 JSF 中实现身份验证?