1

私は次のことを行う方法を探しています:

プロジェクト:いくつかのイベントが発生したときに呼び出される抽象クラスを定義します(必要な場合はイベントハンドラー)上記のイベントハンドラーを使用してイベントを発生させるエンジンを定義します

Bプロジェクト:抽象クラスの実装を定義しますエンジンを実行します。

実装クラスを登録して、エンジンの実行時に呼び出されるクラスであることを確認するにはどうすればよいですか。

編集1:レジスターとは、与えられた抽象オブジェクトに対して呼び出される実装を何らかの方法で定義する必要があることを意味します

質問が明確でない場合は申し訳ありませんが、詳細が必要な場合はお知らせください

4

3 に答える 3

2

このようなもの?

class A implements EventHandlerForB {
...
}

public class B {
  private EventHandlerForB eventHandler;

  public void registerEventHandler(EventHandlerForB eventHandler) {
    this.eventHandler = eventHandler;
  }
...
}

public interface EventHandlerForB {
...
}
于 2009-07-27T12:19:00.380 に答える
1

実行時に、実装の名前をAプロジェクトに渡すことができます(プロパティファイルまたはJavaシステムプロパティを使用)。次に、このクラスをクラスパスで見つけて、class.forName()でインスタンス化しnewInstance()ます。

ただし、GuiceやSpringなどのフレームワークを使用することをお勧めします。これにより、クリーンな方法でコンテンツを接着できます。

于 2009-07-27T14:57:35.897 に答える
0

この問題に対処しようとするいくつかの「パターン」があります。JDK(6以上)クラスのみを使用して、java.util.ServiceLoaderを確認することをお勧めします。

于 2009-07-27T12:21:20.023 に答える