首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Google Reflections获取所有类的列表--但似乎缺少java.*

使用Google Reflections获取所有类的列表--但似乎缺少java.*
EN

Stack Overflow用户
提问于 2013-01-14 15:46:28
回答 2查看 10.5K关注 0票数 7

我正在使用google Reflections包来构建可供调用的所有类的索引。下面的代码将返回JVM中加载的所有类:

代码语言:javascript
复制
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());                      
Reflections reflections = new Reflections(new ConfigurationBuilder()
         .setScanners(new SubTypesScanner(false), new ResourcesScanner())
         .setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0]))));
Set<Class<? extends Object>> allClasses = 
         reflections.getSubTypesOf(Object.class);

我注意到它返回的set不包含java.*域中的任何内容。熟悉Reflections软件包的人能建议我如何获得这些吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-14 18:52:52

并不是所有的类都是由普通的类加载器加载的;有些类是由bootstrap类加载器加载的,以加快速度,这可以在本地编码(因此无法从Java代码访问)。请参阅此消息:

http://lists.jboss.org/pipermail/jboss-development/2008-April/011943.html

有关替代方案,请参阅此问题

Java - Get a list of all Classes loaded in the JVM

票数 2
EN

Stack Overflow用户

发布于 2013-03-10 00:34:19

Google Reflections可用于获取所有类,包括java.*,尽管它不是其主要用途。

代码语言:javascript
复制
Reflections reflections = new Reflections(
    ClasspathHelper.forClass(Object.class), 
    new SubTypesScanner(false));

然后:

代码语言:javascript
复制
Set<String> allClasses = 
    reflections.getStore().getSubTypesOf(Object.class.getName());
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14314789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档