在Java中为数组索引使用枚举

在阅读Effective Java时我遇到了“使用枚举而不是int常量”的建议。在当前的项目中,我正在做类似于下面的事情:

int COL_NAME = 0;
int COL_SURNAME = 1;

table[COL_NAME] = "JONES" 

我怎么使用枚举来实现呢?由于我被迫使用的接口,我必须使用int为我的索引。上面的例子只是一个例子。我实际上使用一个接受索引值int的API。

将一个有用模式与反模式一起应用通常会失败;-)

在你的情况下,使用一个不是真的数组类数据的数组提供了一个问题,当你想用枚举值替换int常量。

一个干净的(er)解决方案将像一个EnumMap与enum值作为键。

或者你可以使用table[COL_NAME.ordinal()]如果你绝对必须。

如果一些API强制你传递int值,但你可以控制实际值(即你可以传递你自己的常量),那么你可以切换到使用枚举值在代码中转换/从枚举只在地方您的代码与API接口。 enumValue.ordinal()的逆操作是EnumClass.values()[ordinal])。

http://stackoverflow.com/questions/5417454/use-enums-for-array-indexes-in-java

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:在Java中为数组索引使用枚举