我想在.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();
}

10-05 18:56