gpt4 book ai didi

java - 如何判断TypeDeclaration是一个类?(TypeDeclaration不能转换为Class)

转载 作者:行者123 更新时间:2023-11-30 02:14:04 25 4
gpt4 key购买 nike

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

关于java - 如何判断TypeDeclaration是一个类?(TypeDeclaration不能转换为Class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49160540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com