当前位置: 首页 > 面试题库 >

你可以使用java反射找到包中的所有类吗?

壤驷阳冰
2023-03-14
问题内容

你可以使用java反射找到包中的所有类吗?


问题答案:

由于类装载机的动态特性,这是不可能的。类加载器不需要告诉VM它可以提供哪些类,而是它们只是对类的处理请求,而必须返回一个类或引发异常。

但是,如果你编写自己的类加载器,或检查类路径及其jar,则可以找到此信息。但这将通过文件系统操作,而不是通过反射。甚至可能有一些库可以帮助你做到这一点。

如果有一些生成或远程交付的类,你将无法发现这些类。

通常的方法是在某处将需要访问的类注册到文件中,或在其他类中引用它们。或者在命名时只使用约定。

Reflections reflections = new Reflections("my.project.prefix");

Set<Class<? extends Object>> allClasses =
     reflections.getSubTypesOf(Object.class);


 类似资料:
  • 问题内容: 是否可以在给定的包中找到所有类或接口?(快速查看例如Package,似乎没有。) 问题答案: 由于类装载机的动态特性,这是不可能的。类加载器不需要告诉VM它可以提供哪些类,而是它们只是对类的处理请求,而必须返回一个类或引发异常。 但是,如果你编写自己的类加载器,或检查类路径及其jar,则可以找到此信息。不过,这将通过文件系统操作进行,而不是通过反射进行。甚至可能有一些库可以帮助你做到这

  • 问题内容: 在Java中,是否可以使用JDK库发现在另一个类中实现的私有类?还是我需要使用asm之类的东西? 问题答案: 就是答案。

  • 问题内容: 嗨,我是java反射域的新手,所以任何人都可以在这种问题情况下指导我。 我有一个名为 “ SomClass.java”* 的 类 ,它 导入了一个 名为 “ SomPackage.RefClass” 的包以及一些其他的Java库,例如java.lang ..等。 * 现在,我希望通过反思来了解在一类中定义的所有导入。 我只是想知道使用反射在类中定义的所有导入的列表。 我已经看到了问题发

  • 在哪里可以找到可以传递给会话对象的所有可用Java邮件属性的列表?我只能在API中找到基本属性。浏览博客来寻找更多的属性并不好。一定有什么清单?

  • 问题内容: 我试图找到Java运行时可用的所有类的名称,并在Guava中使用反射将代码成功实现了一些成功,例如: 这似乎在某种程度上可以使我获得大约2500个类名,但是并没有找到所有的类名,特别是我确实需要了解的所有类,特别是java.lang,java.util等。 我应该为此使用其他类加载器吗?我也尝试过 任何指针将不胜感激。谢谢 恩文 我从这篇文章中使用了更多信息:如何列出特定类加载器中加载

  • 问题内容: 是否可以在Java中以反射方式实例化泛型?使用此处描述的技术,由于类标记不能通用,我会遇到错误。请看下面的例子。我想实例化一些实现Creator的Creator子类。实际的类名作为命令行参数传递。这个想法是为了能够在运行时指定Creator的实现。还有另一种方法可以完成我在这里要做的事情吗? 编辑:我喜欢Marcus的方法,因为它是最简单,最实用的方法,不会绕开整个泛型的东西。我可以在