【问题标题】:List all the classes used - compile time列出所有使用的类 - 编译时间
【发布时间】:2014-04-08 07:18:12
【问题描述】:

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

例如,对于代码:

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

...

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

我想得到

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

编辑

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

相关

【问题讨论】:

标签: java


【解决方案1】:

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

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

  • 如果你只对注解感兴趣,可以尝试在编译过程中使用APT添加注解处理器。

【讨论】:

    【解决方案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();
        }
    

    【讨论】:

      猜你喜欢
      • 2017-01-18
      • 1970-01-01
      • 2020-02-15
      • 2013-06-19
      • 1970-01-01
      • 2014-05-14
      • 1970-01-01
      • 2020-05-25
      • 1970-01-01
      相关资源
      最近更新 更多