0

java.util.ServiceLoaderを使用して、軽量のプラグインフレームワークを作成しています。

私は現在、同じFQNで複数の実装クラスを作成する方法に取り組んでいます。クラスパスに同じプラグインの2つのコピーを置き、META-INF/servicesディレクトリにある両方の実装クラスにアクセスしたいと思います。

これが私が何を意味するかを説明するいくつかの簡単なEclipseプロジェクトです: https ://docs.google.com/open?id = 0B4MxFm-ACB3IUmswN0dpMExTVms

ServiceLoaderIntfには、プラグインによって実装されるシンプルなインターフェイスがあります。ProjectOneとProjectTwoはプラグインを表します。ServiceLoaderには、実装者を反復処理してinit()メソッドを呼び出すTesterクラスがあります。

実装クラスが同じFQNを持っている場合でも、どうすればすべての実装者を認識させることができますか?現在、ProjectOneのプラグインクラスを認識するだけです。

4

1 に答える 1

0

サービス クラスは同じ共有クラス ローダーによってロードされるため、実装クラスに同じ FQN を使用することはできません。

さらに、クラス名は少なくともその目的を示唆する必要があるため、さまざまな実装間で同じ FQN を共有することは意味がありません。

于 2012-12-18T10:05:51.490 に答える