我的应用程序由多个JAR文件组成。我想迭代所有的JAR文件,并找到所有继承特定类的类,以便我可以使它们的静态初始化器运行。如何枚举Java中超类的所有子类
我查看了Javadocs的java.lang.ClassLoader,但找不到任何这样做的方法。
我试图实现“产品交易者”模式(http://www.ubilab.com/publications/print_versions/pdf/plop-96-producttrader.pdf),并在抽象超类中使用“自注册”类。超类将有一个HashMap,它映射子类提供的服务和处理该服务的java.lang.Class文件。
问题是一个类直到加载它才运行它的静态初始化器。如果我可以迭代所有的子类,我可以强制每个加载并运行初始化器。
谢谢,拉尔夫
ServiceLoader似乎是相当“重量级”的使用 – Ralph 2010-02-17 14:42:19
@Ralph:真的吗?它看起来正是你想要的。无需执行任何注册。只需向ServiceLoader询问接口的所有实现即可。 – 2010-02-17 14:59:02
我会仔细看看。谢谢。现在,如果我能让ANT自动构建META-INF的东西,它可能是完美的。 – Ralph 2010-02-17 15:24:49