私はちょうどJavaを学んでいます。私はいくつかの問題を抱えています。 ここでは、単純なファクトリパターンを持っている:自動工場登録
public class SomeFactory {
...
public static void registerProduct(String name, Class<? extends IProduct > f)
}
public SomeProduct implements IProduct {
static {
SomeFactory.register("some product", SomeProduct.class);
}
...
}
すべての製品は、工場出荷時に自分自身を登録する必要があります。
ただし、このコードを使用する前に、すべての商品クラスを読み込む必要があります。 例えば、main関数にClass.forName()
をどこかに置くことができます。 しかし、私はそのような種類の手動クラスの読み込みを避けたいと思います。新しいIProduct
実装を追加するだけで、他の部分(例えばSomeFactory
またはMain
メソッドなど)を更新する必要はありません。 しかし、私はいくつかのクラス(例えば注釈でマークされている)を自動的に読み込むことは可能でしょうか?
P.S実行時に他のクラスは追加されません。コンパイルする前にすべてIProduct
の実装がわかっています。
UPD#1 お返事ありがとうございます! しかし、IProduct
インスタンスで自動生成されたプロパティファイルを作成することはできますか? 私は、プロパティファイルやローダーコードを生成するいくつかのビルドタイムスクリプト(例えば、maven用)を作成することは可能ですか?そのようなソリューションやフレームワークはありますか?
UPD#2 私は、起動時にクラスパスをスキャンすることによって、実行時の情報を提供しReflections libraryを使用して仕上げました。
がどのように '()' ... {} ''静的に仕事に行くのthis.getClassであることを自分自身を試してみました:) –