【问题标题】:How to extract the name of all classes in a normal String from java class? [closed]如何从java类中提取普通String中所有类的名称? [关闭]
【发布时间】:2016-05-16 08:26:03
【问题描述】:
public class A {

    public class B{

        public class C {

        }

    }

    public class D {

    }
}

如果这是我的示例,我如何编写 java 代码来获取字符串中的 A、B、C 和 D 等类的名称。帮助将不胜感激。谢谢

【问题讨论】:

    标签: java classname


    【解决方案1】:

    我想出了这个基于reflection 的答案:

    public static List<String> getClassNames(Class baseClass) {
        List<String> classNames = new ArrayList<String>();
        classNames.add(baseClass.getSimpleName());
        for (Class subclass: baseClass.getClasses()) {
            classNames.addAll(getClassNames(subclass));
        }
        return classNames;
    }
    

    返回 [A, D, B, C]。你没有说清楚顺序是否重要。

    【讨论】:

    • 顺序并不重要 :) 我会试试这个代码......谢谢
    【解决方案2】:

    如果要解析的类不在您的类路径中(并且您只有源代码),您需要解析它并与任何可能的 java 代码兼容,您应该使用 java 解析器。有几种。你可以google一下。

    例如:https://github.com/javaparser/javaparser

    如果类在你的类路径中,你可以使用反射。

    【讨论】:

    • new VoidVisitorAdapter() { @Override public void visit(ClassOrInterfaceDeclaration n, Object arg) { super.visit(n, arg); System.out.println(" * " + n.getName()); } }.visit(JavaParser.parse(file), null);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多