Java 提取使用AST解析器实现的类的接口
我正在使用AST解析器编译一个项目源代码。我可以用什么方式提取类层次结构信息,即它是实现任何接口还是从另一个类扩展?您可以访问Java 提取使用AST解析器实现的类的接口,java,eclipse-jdt,abstract-syntax-tree,Java,Eclipse Jdt,Abstract Syntax Tree,我正在使用AST解析器编译一个项目源代码。我可以用什么方式提取类层次结构信息,即它是实现任何接口还是从另一个类扩展?您可以访问TypeDeclaration节点并从中获取类型绑定 ITypeBinding typeBind = typDec.resolveBinding(); 然后,您可以按如下方式获得超级类和实现的接口: public boolean visit(TypeDeclaration typeDeclaration) { ITypeBinding typeBind
TypeDeclaration
节点并从中获取类型绑定
ITypeBinding typeBind = typDec.resolveBinding();
然后,您可以按如下方式获得超级类和实现的接口:
public boolean visit(TypeDeclaration typeDeclaration) {
ITypeBinding typeBind = typeDeclaration.resolveBinding();
ITypeBinding superTypeBind = typeBind.getSuperclass();
ITypeBinding[] interfaceBinds = typeBind.getInterfaces();
return true;
}
如果您有一个IType实例(type),那么可以按如下方式获取ITypeHierarchy中的类层次结构
ITypeHierarchy typeHierarchie = type.newTypeHierarchy(new NullProgressMonitor());
ITypeHierarchy具有查询已实现接口的方法
typeHierarchie.getSuperInterfaces(type);
以及扩展了哪些类
typeHierarchie.getSuperclass(type);
typeHierarchie.getAllSuperclasses(type);
除非您只需要解析特定文件中的类中的签名语法(或扩展的类名列表),否则Java需要跨多个文件(一些源文件,一些类文件)进行全名和类型解析。如果对你有帮助的话,投票或接受答案。我不使用IType实例这不使用IType。使用AST访问者模式和类型声明AST节点。更新答案以更清晰。