我的应用程序包含几个JAR文件.我想迭代所有JAR文件并找到子类化特定类的所有类,以便我可以使它们的静态初始化器运行.
我查看了java.lang.ClassLoader的Javadocs,但找不到任何执行此操作的方法.
我正在尝试实现"Product Trader"模式(http://www.ubilab.com/publications/print_versions/pdf/plop-96-producttrader.pdf),在抽象超类中使用"自注册"类.超类将有一个HashMap,它映射子类提供的服务和处理该服务的java.lang.Class文件.
问题是类在加载之前不会运行它的静态初始值设定项.如果我可以迭代所有子类,我可以强制每个子加载并运行它的初始化器.
谢谢,拉尔夫
这通常是不可解决的.ClassLoader不需要能够迭代它可以加载的类.无法执行此操作的ClassLoader最简单的示例是从http://基本URL 加载类时:HTTP没有提供枚举任何给定URL内容的标准方法.
实现这一点的更好方法是使用ServiceLoader并让所有实现类通过其jar文件中的简单条目进行自我注册.
| 归档时间: |
|
| 查看次数: |
796 次 |
| 最近记录: |