列出所有使用的类 - 编译时间

时间:2014-04-08 07:18:12

标签: 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 个答案:

答案 0 :(得分:1)

在编译期间无法进行。您将有两个选择接近这个想法:

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

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

答案 1 :(得分:0)

获取所有声明的字段。它会返回一个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();
    }