Chr*_*son 17 java reflection runtime
可能重复:
如何在Java中找到给定类的所有子类?
嗨,
我想获得一个在运行时用Java实现接口的类列表,这样我就可以进行查找服务而无需对其进行硬编码.有一个简单的方法吗?我不担心.
cle*_*tus 24
最简洁的答案是不.
很长的答案是子类可以以多种方式存在,这基本上使得无法对它们进行绝对的分类.
你不能在运行时这样做,但是在加载之前你找不到类,你怎么知道它们被加载了?您可以扫描每个JAR和类文件,但这不是确定的.另外还有像URL类加载器这样的东西.
内部类(静态和非静态)是另一种需要考虑的案例.命名的内部类更容易找到.匿名内部类可能更难找到.
您还必须考虑如果一个类有子类,那么可以在以后创建新的子类.
您应该使用内置类的Java ServiceLoader.它能够在运行时通过所有已知的服务(接口)实现进行迭代.
如果由于某种原因你不想要它,你可以使用ClassLoader.getSystemResources()迭代所有资源; 例如,如果您有6倍的文件/META-INF/com.interface,您将获得6次迭代.
| 归档时间: |
|
| 查看次数: |
32442 次 |
| 最近记录: |