为什么枚举会实现接口?
我刚刚发现Java允许枚举实现接口。这有什么好的用例呢?
这里有一个例子(在有效的Java第2版中找到一个类似/更好的例子):
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()));
因此,在这里,您可以使用接口来模拟可扩展的枚举(如果不使用接口,这是不可能的)。
枚举不仅需要表示被动集(例如颜色)。它们可以表示具有功能的更复杂的对象,因此您可能希望向这些对象添加更多功能 - 例如,您可能具有诸如 等接口以及支持这些的组件。Printable
Reportable