考虑我有几个类似于下面的枚举:
enum FooA {
THREE(3), FOUR(4), SEVERN(7);
private int x;
private Foo(int x) {
this.x = x;
}
}
enum FooB {
EIGHT(8), ONE(1), TEN(10);
private int x;
private Foo(int x) {
this.x = x;
}
}
如果我想添加一个在每个枚举中返回x的方法,我应该:
我问这个的原因是因为在我看来好像使用抽象类或接口过度使用它,特别是如果只是为了一个getter。
答案 0 :(得分:0)
如果我想添加一个在每个枚举中返回x的方法,我应该:
将方法添加到每个枚举中?
也许,让我们先考虑其他两个选项。
创建一个包含x的抽象类,并且已经实现了getX方法。
如果你想尝试像enum FooA extends AbstractFoo
这样的话,那我恐怕你运气不好。 Java中的所有enums
都隐式地扩展了Enum
类。 Java中的一个类最多可以扩展一个类,因此该选项已经用完了。
创建一个包含getX方法的接口,并为每个枚举实现它?
这是一种可能性,但你会遇到一些问题。您可以将变量x
添加到接口,但它将是静态的,您必须在接口中初始化它,因此它在这里不是很有用。
这可能仍然是正确的解决方案(如果您希望能够互换地同时使用x
枚举类型,则不会向接口添加getX()
,只需添加Foo
方法)你不会从中得到任何干嘛的好处。
所以至少对我的结论是你必须将方法添加到每个枚举,你可能想要使用一个接口。