Java数组:用常量标识向量的元素

Java数组:用常量标识向量的元素,java,arrays,enums,Java,Arrays,Enums,我有一个字符串数组(String[]),其中包含几个表示XPath查询的字符串对象。这些查询是在设计时预先确定的。该数组被传递给执行查询的对象,然后返回一个带有结果的映射 地图是这样制作的: {Query that originated the result, Results vector} 因为我必须获取这些结果,然后对它们执行一些操作,所以我需要了解各个查询。e、 g: ArrayList<String> firstQueryResults = xpathResults.get

我有一个字符串数组(
String[]
),其中包含几个表示XPath查询的字符串对象。这些查询是在设计时预先确定的。该数组被传递给执行查询的对象,然后返回一个带有结果的
映射

地图是这样制作的:

{Query that originated the result, Results vector}
因为我必须获取这些结果,然后对它们执行一些操作,所以我需要了解各个查询。e、 g:

ArrayList<String> firstQueryResults = xpathResults.getObject(modelQueries[0]);
... logic pertaining only to the first query results ...
我曾想过使用映射(即
Map
Map{ID,Query}
),但我仍然需要通过硬编码字符串(例如“Package”)引用查询。
我还想过使用
枚举
,但我有几个查询集(模型、组件等),我还需要以
字符串[]
形式获取一个集中的所有查询,以便将它们传递给执行查询的对象。

您可以使用标记接口:

public interface QueryType {
}
public enum ModelQueries implements QueryType {
   ...
}

public enum ComponentQueries implements QueryType {
   ...
}
然后,您的枚举可以实现此接口:

public interface QueryType {
}
public enum ModelQueries implements QueryType {
   ...
}

public enum ComponentQueries implements QueryType {
   ...
}
等等


然后您的
getObject
方法可以接受
QueryType
类型的参数。你在找这样的东西吗?如果我没有正确理解您的问题,请告诉我。

我可以使用您的策略,然后将查询的标识方式从简单字符串更改为查询类型。我需要使枚举保存字符串属性(保存查询表达式)<代码>公共枚举模型查询实现查询{PACKAGE(\\XPathQuery…);字符串查询;模型查询(字符串查询){this.Query=Query;}}
是的,这将是一种实现方法。您可以在接口中指定方法,以便所有实现枚举都必须实现它。您是否认为这种解决方案只是为了避免查询的“硬编码”标识(即通过整数-数组索引或通过字符串-映射键)而过于苛刻?还是为了清楚起见值得?啊,我的印象是id没有包含有关查询的信息。我刚看了你对评论的编辑。在每个查询中使用单独的枚举可能有些过分,因为这会导致类型爆炸,因为您需要越来越多的查询。但是,您仍然可以使用标记接口来标识查询组。因此,假设每个查询没有枚举,而是每个枚举有一组查询(如果我假设正确的话,这表示一种查询类型),则可以将映射键设置为
map