我想将一些信息附加到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的解决方案也完全没问题。