在阅读Effective Java时,我遇到了"使用枚举而不是int常量"的建议.在当前的项目中,我正在做类似下面的事情:
int COL_NAME = 0;
int COL_SURNAME = 1;
table[COL_NAME] = "JONES"
Run Code Online (Sandbox Code Playgroud)
我将如何使用枚举来实现这一目标?由于我被迫使用的接口,我必须使用intfor我的索引.上面的例子只是一个例子.我实际上使用的是一个带int索引值的API .
Joa*_*uer 50
将一个有用的模式与反模式一起应用通常会失败;-)
在您的情况下,当您想要int用enum值替换常量时,使用数组来表示非真实数组的数据会产生问题.
一个干净的(呃)解决方案就像EnumMap将enum值作为键一样.
或者你可以使用,table[COL_NAME.ordinal()]如果你绝对必须.
如果某些API强制您传递int值但您可以控制实际值(即您可以传递自己的常量),那么您可以切换到使用enum代码中的值并enum仅在代码接口的位置转换为/从使用API.反向操作enumValue.ordinal()是EnumClass.values()[ordinal]).
听起来你正在尝试使用EnumMap.这是一个包含值数组的Map.
enum Column {
NAME, SURNAME
}
Map<Column, String> table = new EnumMap<Column, String>(Column.class);
table.put(Column.NAME, "JONES");
String name = table.get(Column.NAME);
Run Code Online (Sandbox Code Playgroud)
如果你使用POJO,这会简单得多.
classPerson {
String name;
String surname;
}
Person person = new Person();
person.name = "JONES";
String name = person.name;
Run Code Online (Sandbox Code Playgroud)