0

「アドオン」インターフェースを必要とするJavaプロジェクトがあります。initialize()のようなデフォルトのメソッドを持つある種のクラスファイルをロードすることを考えshutdown()ていました。これは、クラスがアプリケーションにロードされた後に呼び出されます。これはそれを行う方法ですか?この問題にどのようにアプローチしますか?

4

5 に答える 5

3

Classクラス、特にforNameメソッドを見てください。これにより、クラスを名前で参照できます。パス内の任意のクラスは、このようにロードできます。リロードが可能かどうかはわかりません。

いずれの場合も、動的にロードする各クラスは、カスタムAddOnインターフェイスを実装する必要があります。したがって、とを実装initializeshutdownます。

于 2009-05-18T19:30:35.437 に答える
1

まず、ClassLoader;が必要になります。を使用して現在のクラスを取得できますがgetClass().getClassLoader()、アドオンクラスはクラスパスに含まれている必要があります。アドオンディレクトリを検索するカスタムクラスローダーを作成することをお勧めします。

を取得したらClassLoader、それを使用してクラスをロードできます。これはあなたにClassオブジェクトを与えます。次に、リフレクションを使用して、initialize()メソッドが存在する場合はメソッドを呼び出すことができます。

于 2009-05-18T19:31:42.860 に答える
1

より洗練されたものを見る場合は、http://jpf.sourceforge.netを試すことができます。

... JPFは、「プラグイン」を動的に検出してロードするランタイムエンジンを提供します。プラグインは、「マニフェスト」を使用してJPFに自身を記述する構造化されたコンポーネントです。..。

于 2009-05-18T20:45:07.237 に答える
0

アドオンを実現するもう1つの優れた方法は、java.util.Serviceloaderです。javadocsを見てください、彼らは原理を説明しています。

于 2009-05-18T19:34:15.477 に答える
-1
public class SomeClass { 
    static {
        System.out.println("Being called with the class is loaded");
        initialize();
    }
    static void initialize(){}
}

それはあなたの質問ですか?

于 2009-05-18T19:28:32.523 に答える