将信息附加到抽象语法树

时间:2014-12-11 10:55:39

标签: 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()) {
          boolean v = expensiveCheck(e);
          e.setAttribute(v);
        } 

        return e.getAttribute();
      }
    }

我想知道实现这个目标的最佳方法吗?我想到的一个解决方案是使用诸如

之类的地图
    Map<String, Boolean> attributes = ...;
    attributes.put(e.getQualifiedName(), expensiveCheck(e));

但是,这对于方法或字段不起作用,因为它们没有明确的名称。

依赖于com.sun.source.tree的解决方案也完全没问题。

0 个答案:

没有答案