【发布时间】:2013-02-19 21:46:07
【问题描述】:
我发现Enums 的定义如下:
public Enum MyEnum {
ONE
{
@Override
public int getSomething() {
return 1;
}
},
TWO
{
@Override
public int getSomething() {
return 2;
}
}
int getSomething()
{
return 0;
}
}
不知何故,我对这种实现感到某种不适,因为我认为理想情况下应该为此目的定义一个字段,并且该类应该类似于:
public Enum MyEnum{
ONE(1),
TWO(2)
private int theSomething;
private MyEnum(int something) {
theSomething = something;
}
int getSomething()
{
return theSomething;
}
}
问题在于,除了个人不适之外,我找不到任何好的理由来更改此代码。有吗?
【问题讨论】:
-
第二种形式使其更具可读性和可扩展性,选择那个!
-
在您的第一个示例中,它是一个 状态机。没有完全正确地实现(
getSomething()应该是抽象的)......但这就是你使用那种结构的原因。在实际示例中,这些方法通常要复杂得多(它们实际上是在做事情而不是返回静态值)和/或在当前状态下不应调用它们时抛出IllegalStateException。 -
这两种方法都是有效的。
标签: java coding-style enums