我刚刚发现 Java 允许枚举实现接口。什么是一个好的用例?
原文由 unj2 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是一个示例(在 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()));
所以在这里你使用一个接口来模拟可扩展的枚举(如果不使用接口这是不可能的)。
原文由 helpermethod 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.2k 阅读
8 回答6k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.2k 阅读
2 回答3.9k 阅读
1 回答2.2k 阅读✓ 已解决
枚举不仅仅必须表示被动集(例如颜色)。它们可以表示具有功能的更复杂的对象,因此您可能希望向这些对象添加更多功能 - 例如,您可能具有诸如
Printable
,Reportable
等接口,以及支持这些的组件。