我正在寻找一种在Java中打印所有实例化对象的方法。 PHP使用get_declared_classes():
是一种简单的方法<?php
print_r(get_declared_classes());
?>
在Java中是否有一个等效的工具,就像在PHP中一样简单?
答案 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
它将列出所有实例化的类,并为我完成这项工作。无论如何,谢谢你的帮助。