700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 有效的java限定名称_java - 如何获取java类的完全限定名称 - SO中文参考 - www.soinside.com...

有效的java限定名称_java - 如何获取java类的完全限定名称 - SO中文参考 - www.soinside.com...

时间:2021-03-23 12:52:09

相关推荐

有效的java限定名称_java - 如何获取java类的完全限定名称 - SO中文参考 - www.soinside.com...

我写了一个方法,可以在ClassOrInterfaceDeclaration对象(最新版本的JavaParser)的基础上获得完全限定名称:

private static String getFullyQualifiedName(ClassOrInterfaceDeclaration c2) {

String name = "";

ClassOrInterfaceDeclaration parentClass = c2.getParentNode().isPresent() ? getClass(c2.getParentNode().get()): null;

if(parentClass!=null) {

name+=getFullyQualifiedName(parentClass)+".";

} else {

CompilationUnit u = getCompilationUnit(c2);

if(u!=null && u.getPackageDeclaration().isPresent()) {

name+=u.getPackageDeclaration().get().getNameAsString()+".";

}

}

return name+c2.getNameAsString();

}

private static ClassOrInterfaceDeclaration getClass(Node n1) {

while (!(n1 instanceof ClassOrInterfaceDeclaration)) {

if(n1.getParentNode().isPresent()) {

n1 = n1.getParentNode().get();

} else return null;

}

return (ClassOrInterfaceDeclaration)n1;

}

private static CompilationUnit getCompilationUnit(Node n1) {

while (!(n1 instanceof CompilationUnit)) {

if(n1.getParentNode().isPresent()) {

n1 = n1.getParentNode().get();

} else return null;

}

return (CompilationUnit)n1;

}

如果您获得该类的ClassOrInterfaceType,则可以使用更简单的版本:

private static String getFullyQualifiedName(ClassOrInterfaceType e) {

String name = "";

if(e.getScope().isPresent())

name+=getFullyQualifiedName(e.getScope().get())+".";

return name+e.getNameAsString();

}

我希望这对任何人都有帮助!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。