Java 将信息附加到抽象语法树

Java 将信息附加到抽象语法树,java,compiler-construction,annotation-processing,Java,Compiler Construction,Annotation Processing,我想向javax.lang.model.element.element对象或com.sun.source.tree.tree对象附加一些信息,以便以后可以访问这些信息 class Visitor extends ElementKindVisitor8<Void, Void> { @Override public Boolean visitType(TypeElement e, Void v) { if(!e.hasAttribute

我想向javax.lang.model.element.element对象或com.sun.source.tree.tree对象附加一些信息,以便以后可以访问这些信息

    class Visitor extends ElementKindVisitor8<Void, Void> {

      @Override
      public Boolean visitType(TypeElement e, Void v) {

        if(!e.hasAttribute()) {
          boolean v = expensiveCheck(e);
          e.setAttribute(v);
        } 

        return e.getAttribute();
      }
    }
类访问者扩展了ElementKindVisitor 8{
@凌驾
公共布尔访问类型(TypeElement e,Void v){
如果(!e.hasAttribute()){
布尔值v=费用检查(e);
e、 setAttribute(v);
} 
返回e.getAttribute();
}
}
我想知道实现这一目标的最佳方法是什么?我想到的一个解决办法是使用地图,例如

    Map<String, Boolean> attributes = ...;
    attributes.put(e.getQualifiedName(), expensiveCheck(e));
Map属性=。。。;
attributes.put(e.getQualifiedName(),expensiveCheck(e));
但是,这对方法或字段不起作用,因为它们没有明确的名称

依赖com.sun.source.tree的解决方案也完全可以

java.util.HashMap属性…
将为您解决“明确”的名称问题。如果两个对象恰好具有相同的
哈希代码
,它们将放入同一个哈希桶中,但稍后获取时,您将获得正确的值。有关详细信息,请参阅