Есть ли Java-эквивалент PHP get_declared_classes ()?

Я ищу способ печати всех экземпляров объектов в Java. Есть простой способ с использованием PHP get_declared_classes ():

<?php
print_r(get_declared_classes());
?>

Есть ли в Java эквивалент, который работает так же просто, как и в PHP?

2

Решение

Загрузка классов в Java осуществляется через загрузчики классов, поэтому вы можете только надеяться, что все классы будут загружены данным загрузчиком классов. Обратите внимание, что один класс может быть загружен разными загрузчиками классов и что он может быть загружен в разных версиях разными загрузчиками классов.

Если вы хотите узнать, какие классы были загружены одним загрузчиком классов, посмотрите Как я могу перечислить все классы, загруженные в определенный загрузчик классов

Простое решение может быть

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

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

Но это зависит от реализации Suns и может не сработать с другими поставщиками.

1

Другие решения

Я провел небольшое исследование и обнаружил, что для целей отладки проще всего запустить JVM с параметром командной строки. -verbose:class как это:

java -verbose:class Example

В нем будут перечислены все экземпляры классов, и это сделает работу за меня. В любом случае, спасибо за вашу помощь.

1

По вопросам рекламы [email protected]