我可以将注释用作HashMap中的键吗?

时间:2014-04-30 09:38:20

标签: java reflection

例如,我有一个通过反射获得的Field。该字段有注释。我用

field.getAnnotation(CustomAnnotation.class)

得到一个。我可以将它用作哈希映射中的键吗?我的意思是因为我可以,但这个关键字对于Field来说是独一无二的吗?


我想要HashMap<CustomAnnotation, Integer>其中Integer值是CustomAnnotation具有的集合中最后使用的元素的索引:

@CustomAnnotation(values={"ONE", "TWO"})

1 个答案:

答案 0 :(得分:2)

您可以将Annotation实例用作HashMap键。 interface defines exactly如何等于和hashCode应该工作。实质上它们是平等的......

  

...如果指定的对象表示在逻辑上等同于此注释的注释。

但是,我不确定这是你想要的。

特别是,如果您在两个不同的字段上使用相同的@CustomAnnotation(x=123),则其中只有一个可以进入地图。

你不想在Field上键入并重新获得注释吗?

FWIW,Field(和Class,和Method)都可以用作键,具有良好的语义和#34; (如果引用同一个对象,则视为相等)。