在阅读 Effective Java 时,我遇到了“使用枚举而不是 int
常量”的建议。在当前的项目中,我正在做类似于以下的事情:
int COL_NAME = 0;
int COL_SURNAME = 1;
table[COL_NAME] = "JONES"
我将如何使用枚举来实现这一目标?由于我被迫使用接口(interface),我必须使用 int
作为我的索引。上面的例子只是一个例子。我实际上使用的 API 采用 int
作为索引值。
最佳答案
将一种有用的模式与反模式一起应用通常会失败 ;-)
在您的情况下,当您想用 enum
值替换 int
常量时,将数组用于非真正类似数组的数据会出现问题。
一个干净的(er) 解决方案类似于 EnumMap
以 enum
值作为键。
您也可以使用 table[COL_NAME.ordinal()]
如果你绝对必须。
如果某些 API 强制您传递 int
值,但您可以控制实际值(即您可以传递自己的常量),那么您可以切换到使用 enum
值,并且仅在您的代码与 API 接口(interface)的位置与 enum
进行转换。 enumValue.ordinal()
的逆运算是EnumClass.values()[ordinal]
)。
关于java - 在 Java 中使用枚举作为数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417454/