有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java列出编译时使用的所有类

有没有办法让java编译器列出编译源代码中使用的所有类

例如,对于代码:

import foo.bar.Hello;
import java.util.List;

...

Hello hello = ...
String string = ...
List list = ...

我想去

java.lang.String
java.util.List
foo.bar.Hello

编辑

  • 我希望它在编译时(或编译完成后)运行,而不是运行时

相关的


共 (2) 个答案

  1. # 1 楼答案

    在编译过程中是不可能的。您将有两个接近该想法的选择:

    • 使用在类编译后打印导入的程序。例如,您可以使用BCEL编写一个

    • 如果您只对注释感兴趣,可以尝试在编译期间使用APT添加注释处理器

  2. # 2 楼答案

    获取所有声明的字段。它将返回一个Field数组,从中可以获得有关字段的所需信息,如字段类型、字段名称、字段修饰符等

    有关更多信息,请阅读Field JavaDoc

    试试这个简单的代码

        Class<?> clazz = null;
        try {
            clazz = Class.forName("com.x.y.z.ClassName");
    
            for (Field field : clazz.getDeclaredFields()) {
                System.out.println(field.getName());
                System.out.println(field.getType());
    
            }
        } catch (Throwable e) {
            e.printStackTrace();
        }