当前位置: 首页 > 面试题库 >

在Java中将枚举用于数组索引

郎诚
2023-03-14
问题内容

在阅读有效的Java时,我遇到了“使用枚举而不是int常量”的建议。在当前项目中,我正在执行与以下类似的操作:

int COL_NAME = 0;
int COL_SURNAME = 1;

table[COL_NAME] = "JONES"

我将如何使用枚举来实现此目的?由于必须使用该接口,因此必须int为索引使用。上面的例子只是一个例子。我实际上正在使用一个intfor索引值的API


问题答案:

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

在您的情况下,如果要用值替换int常量,enum则将数组用于非真正的类数组数据会带来问题。

干净(ER)解决方案会是这样一个EnumMapenum值作为键。

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

如果某些API强迫您传递int值,但是您可以控制实际值(即可以传递自己的常量),那么您可以切换为enum在代码中使用值,并enum仅在代码接口的地方进行来回转换。使用API​​。的相反操作enumValue.ordinal()EnumClass.values()[ordinal])。



 类似资料:
  • 问题内容: 我想知道如何重新排序枚举,以便所有山羊都在数组的开头而所有羊都在数组的结尾。现在,它实际上可以解决问题,但是要等到数组大小> 100为止。重新排序的速度也很重要,因此api方法有点太慢了。有什么建议? 问题答案: 由于是Implements ,您可以简单地对数组进行排序然后反转: 您也许还可以做到以下几点: 这与API调用基本上具有相同的作用,只是将数组包装在对象中的开销非常小。您甚至

  • 问题内容: 是否可以像下面那样进行枚举 这样,当我按输入值进行搜索时,请说101。它将返回“ rich”?如何在枚举中做到这一点?能举个例子吗?我不想用forloop循环整个枚举来获取string_value。可能? 问题答案: 如其他建议的那样,将with与值一起使用。 然后,提供一种静态方法,该方法通过对所有值的有序列表/数组执行二进制搜索,而不是对枚举值执行强力迭代搜索。 要执行搜索,请从中

  • 我想用Typescript写这样的东西: 并按如下方式使用: 它会返回的地方 上面的函数按预期工作…但是输入抛出错误。对于

  • 问题内容: 我已经读过,可以使用以下方式在Java中实现: 但是,以上内容如何运作?具体来说,必须实例化an 。在这里,如何实例化?谁在做什么? 问题答案: 这个, 有一个隐式的空构造函数。相反,让它明确 如果你随后使用类似的方法添加了另一个类 你会看到 字段是编译时间常数,但它们是其类型的实例。并且,它们是在首次引用枚举类型时构造的。

  • 我正在使用Compass从DTO对象中过滤数据。如果字段是POJO对象,则使用标记字段;如果字段是字符串,则使用标记字段。这非常有效:我将对象和字符串编入索引。 我的问题是如何注释枚举数据类型? 我拥有的枚举示例: 在这个片段中,我应该在哪里放置注释,应该放置哪个注释?

  • 问题内容: 据我了解,似乎没有直接获取a 的键的直接方法。我只能得到一个。从中我可以得到一个,但一个似乎不同于一个。 从a的键直接获取a的最佳和最有效的方法是什么? 背景:我正在实现自己的ResourceBundle(=> 方法),并且必须提供/实现一种返回所有键的枚举的方法。但是我的实现是基于A的,因此我需要以某种方式找出如何在这两种“迭代器/枚举器”技术之间进行最佳转换。 问题答案: Apac