出于调试原因和好奇,我希望列出加载到特定类加载器的所有类。
鉴于类加载器的大多数方法都受到保护,实现我想要的最佳方法是什么?
谢谢!
最佳答案
试试这个。这是一个骇客的解决方案,但它会做。
任何类加载器中的 classes
字段(自 1.0 以来在 Sun 的 impl 下)保存对加载器定义的类的硬引用,因此它们不会被 GC'd。您可以通过反射受益。
Field f = ClassLoader.class.getDeclaredField("classes");
f.setAccessible(true);
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Vector<Class> classes = (Vector<Class>) f.get(classLoader);
关于java - 如何列出在特定类加载器中加载的所有类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2681459/