我可以使用eclipse JDT获取Java中每个方法声明的类名。因此,对于在内部类中声明的方法,我得到内部类的名称。
是否可以使用JDT为方法在内部类中获取外部类名。
到目前为止,我可以通过以下代码识别一个类是内部类还是外部类:
public boolean visit(TypeDeclaration td) {
className = td.getName().getFullyQualifiedName();
if (!td.isPackageMemberTypeDeclaration())
System.out.println(className+" is inner class")
return true;
}
答案 0 :(得分:0)
不确定这是否是理想的方法,但您可以使用以下代码段获取最顶层的TypeDeclaration
(外类)。
public static ASTNode getOuterClass(ASTNode node) {
do {
node= node.getParent();
} while (node != null && node.getNodeType() != ASTNode.TYPE_DECLARATION
&& node.isPackageMemberTypeDeclaration());
return node;
}
然后你可以通过以下方式获得课程名称:
ASTNode outerClassNode = getOuterClass(methodDeclarationNode);
if (outerClassNode != null) { // not the topmost node
System.out.println(outerClassNode.getName());
}
通常我将CompilationUnit
作为ASTVisitor
类的构造函数参数传递,并从中获取文件名。
<强>更新强>
获取声明类详细信息的另一种方法:
typDeclarationNode.resolveBinding().getDeclaredTypes();
如果它是顶级类,则返回null。对于内部类,它将返回外部类。