例如,我有一个通过反射获得的Field。该字段有注释。我用
field.getAnnotation(CustomAnnotation.class)
得到一个。我可以将它用作哈希映射中的键吗?我的意思是因为我可以,但这个关键字对于Field来说是独一无二的吗?
我想要HashMap<CustomAnnotation, Integer>
其中Integer值是CustomAnnotation具有的集合中最后使用的元素的索引:
@CustomAnnotation(values={"ONE", "TWO"})
答案 0 :(得分:2)
您可以将Annotation实例用作HashMap键。 interface defines exactly如何等于和hashCode应该工作。实质上它们是平等的......
...如果指定的对象表示在逻辑上等同于此注释的注释。
但是,我不确定这是你想要的。
特别是,如果您在两个不同的字段上使用相同的@CustomAnnotation(x=123)
,则其中只有一个可以进入地图。
你不想在Field上键入并重新获得注释吗?
FWIW,Field(和Class,和Method)都可以用作键,具有良好的语义和#34; (如果引用同一个对象,则视为相等)。