例如,我有一个通过反射获得的字段。这个字段上有注释。我使用
field.getAnnotation(CustomAnnotation.class)
得到一个。我可以将它用作哈希图中的密钥吗?我当然可以,但这把钥匙对球场来说是独一无二的吗?
我想要HashMap<CustomAnnotation, Integer>
,其中Integer值是CustomAnnotation具有的集合中最后使用的元素的索引:
@CustomAnnotation(values={"ONE", "TWO"})
您可以使用Annotation实例作为HashMap键。接口准确地定义了equals和hashCode的工作方式。本质上他们是平等的。。。
如果指定的对象表示一个在逻辑上等同于此对象的注释。
然而,我不确定这是否是你想要的。
特别是,如果在两个不同的字段上具有相同的@CustomAnnotation(x=123)
,则其中只有一个字段可以进入映射。
你不想在字段上键入并取回注释吗?
FWIW、Field(以及Class和Method(都可以用作键,具有"良好的语义"(如果引用同一对象,则被认为是相等的(。