有没有Java等同于PHP的get_declared_classes()?

时间:2014-11-20 09:53:57

标签: java php class object instantiation

我正在寻找一种在Java中打印所有实例化对象的方法。 PHP使用get_declared_classes()

是一种简单的方法
<?php
print_r(get_declared_classes());
?>

在Java中是否有一个等效的工具,就像在PHP中一样简单?

2 个答案:

答案 0 :(得分:1)

在Java中加载类是通过类加载器完成的,因此您只能希望获得给定类加载器加载的所有类。请注意,一个类可能由不同的类加载器加载,甚至可以由不同的类加载器加载到不同的版本中。

如果您想知道单个类加载器加载了哪些类,请查看How can I list all classes loaded in a specific class loader

一个简单的解决方案可能是

Field f = ClassLoader.class.getDeclaredField("classes");
f.setAccessible(true);

Vector<Class> classes =  (Vector<Class>) f.get(classLoader);

但这取决于太阳队的实施,并可能与其他供应商失败。

答案 1 :(得分:1)

我自己做了一些研究,发现出于调试目的,最简单的方法是使用命令行选项-verbose:class启动JVM,如下所示:

java -verbose:class Example

它将列出所有实例化的类,并为我完成这项工作。无论如何,谢谢你的帮助。