Dan*_*ura 13 java enums java1.4
由于Java 1.4没有枚举,我正在做这样的事情:
public class SomeClass {
public static int SOME_VALUE_1 = 0;
public static int SOME_VALUE_2 = 1;
public static int SOME_VALUE_3 = 2;
public void receiveSomeValue(int someValue) {
// do something
}
}
Run Code Online (Sandbox Code Playgroud)
receiveSomeValue的调用者应传递这3个值,但他可以传递任何其他int.如果它是枚举,则调用者只能传递一个有效值.
应该receiveSomeValue抛出一个InvalidValueException吗?
什么是Java 5枚举的好方法?
Rol*_*der 28
在1.5版中最好使用的是Typesafe Enum Pattern,在Josh Bloch的Effective Java一书中有最佳描述.但是它有一些限制,特别是在处理不同的类加载器,序列化等时.
你也可以看看Apache Commons Lang项目,特别是enum类,就像John写的那样.它是这种模式的一种实现,支持构建自己的枚举.
我通常创建我称之为常量类的东西,有些东西是这样的:
public class MyConstant
{
public static final MyConstant SOME_VALUE = new MyConstant(1);
public static final MyConstant SOME_OTHER_VALUE = new MyConstant(2);
...
private final int id;
private MyConstant(int id)
{
this.id = id;
}
public boolean equal(Object object)
{
...
}
public int hashCode()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
在哪里equals
和hashCode
正在使用id
.