Java 使用Eclipse JDT AST从注释中获取完全限定名
我正在使用EclipseJDT为Java源代码构建AST,因此我可以进行一些代码分析。目前,我希望获得注释的完全限定名。考虑下面的代码: 导入javax.persistence.Entity; @实体 公共班级1 如果我访问这个编译单元,@实体是一个标记符号。我可以做一些分析。但是,我无法获得完全限定的名称。我想获得javax.persistence.Entiy。我试过几种方法,但没有成功 公共布尔visitMarkerAnnotation节点{ node.getTypeName;//返回简单名称 node.getTypeName.getFullyQualifiedName;//我以为这会打印javax.persistence.Entiy, //但它只打印实体 node.resolveTypeBinding.getName;//打印实体 node.resolveTypeBinding.getBinaryName;//打印实体 node.resolveAnnotationBinding.getName;//打印实体 返回super.visitnode; } 我还尝试将markeranotation转换为注释,但仍然无法获得完全限定的名称。在调试会话期间,我也没有成功导航此节点 我能够使用CompilationUnit的imports方法获得完全限定名。我对它们进行了一些字符串操作,并结合了简单名称的注释。然而,我觉得这是一种黑客行为,我需要查看每个导入,即使是与注释无关的导入 我想要的是直接从节点获得完全限定名,即从MarkerAnnotation、NormalAnnotation和SingleMemberAnnotation。有没有办法做到这一点?我错过了什么 提前谢谢 来自以下的javadoc: 请注意,除非在生成AST时请求,否则包含已解析注释的绑定通常不可用Java 使用Eclipse JDT AST从注释中获取完全限定名,java,abstract-syntax-tree,eclipse-jdt,Java,Abstract Syntax Tree,Eclipse Jdt,我正在使用EclipseJDT为Java源代码构建AST,因此我可以进行一些代码分析。目前,我希望获得注释的完全限定名。考虑下面的代码: 导入javax.persistence.Entity; @实体 公共班级1 如果我访问这个编译单元,@实体是一个标记符号。我可以做一些分析。但是,我无法获得完全限定的名称。我想获得javax.persistence.Entiy。我试过几种方法,但没有成功 公共布尔visitMarkerAnnotation节点{ node.getTypeName;//返回简单名
因此,请检查如何配置ASTParser,请参见啊,是的,我已经将其设置为true ASTParser.setResolveBindingstrue。Perharps,我设置环境的方式可能是问题parser的原因。setEnvironmentnull,srcDirs,null,true。我只有可用的源代码。Perharps唯一的选择是分析导入。ASTParser应该如何找到javax/persistence/Entity.class?这将需要为该注释类型创建绑定。嗯,我明白了。对于我正在开发的工具,无法为环境设置类。现在我明白为什么绑定不起作用了。非常感谢。