在阅读Effective Java时,我遇到了"使用枚举而不是int
常量"的建议.在当前的项目中,我正在做类似下面的事情:
int COL_NAME = 0;
int COL_SURNAME = 1;
table[COL_NAME] = "JONES"
Run Code Online (Sandbox Code Playgroud)
我将如何使用枚举来实现这一目标?由于我被迫使用的接口,我必须使用int
for我的索引.上面的例子只是一个例子.我实际上使用的是一个带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)
归档时间: |
|
查看次数: |
41089 次 |
最近记录: |