我的應用程序由多個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