Я ищу способ печати всех экземпляров объектов в Java. Есть простой способ с использованием PHP get_declared_classes ():
<?php
print_r(get_declared_classes());
?>
Есть ли в Java эквивалент, который работает так же просто, как и в PHP?
Загрузка классов в Java осуществляется через загрузчики классов, поэтому вы можете только надеяться, что все классы будут загружены данным загрузчиком классов. Обратите внимание, что один класс может быть загружен разными загрузчиками классов и что он может быть загружен в разных версиях разными загрузчиками классов.
Если вы хотите узнать, какие классы были загружены одним загрузчиком классов, посмотрите Как я могу перечислить все классы, загруженные в определенный загрузчик классов
Простое решение может быть
Field f = ClassLoader.class.getDeclaredField("classes");
f.setAccessible(true);
Vector<Class> classes = (Vector<Class>) f.get(classLoader);
Но это зависит от реализации Suns и может не сработать с другими поставщиками.
Я провел небольшое исследование и обнаружил, что для целей отладки проще всего запустить JVM с параметром командной строки. -verbose:class
как это:
java -verbose:class Example
В нем будут перечислены все экземпляры классов, и это сделает работу за меня. В любом случае, спасибо за вашу помощь.