我想在.java文件中获取所有类名。但是我无法确定TypeDeclaration是一个类还是其他东西。
我尝试使用以下代码片段,但出现错误
if (type instanceof Class))
{return packagePrefix + type.getName();}
错误:TypeDeclaration无法转换为Class
完整代码:
public static String parseClassname(File filename) throws Exception {
try (FileInputStream fin = new FileInputStream(filename)) {
CompilationUnit cu = JavaParser.parse(fin);
String packagePrefix = cu.getPackage().getName().toString();
if (!packagePrefix.isEmpty()) packagePrefix += ".";
for (TypeDeclaration type : cu.getTypes())
{
if (type instanceof Class)) ////
{return packagePrefix + type.getName();}
}
}
return null;
}
最佳答案
Class
是Java反射API的一部分,用于在运行时表示类型。如果要从源中获取第一个class
声明,则应将ClassOrInterfaceDeclaration
与Java解析器一起使用,并检查isInterface
是否为false
:
if (!(type instanceof ClassOrInterfaceDeclaration))) {
continue;
}
ClassOrInterfaceDeclaration classOrInterface = (ClassOrInterfaceDeclaration)type;
if (!classOrInterface.isInterface()) {
return packagePrefix + type.getName();
}