私のアプリケーションでは、開発者がいくつかのプラグインを作成できます。基本抽象クラスによって決定される要件への準拠。各プラグインには名前が必要です。注釈を使用してこの問題を解決したいと考えています。そこで、独自のアノテーション Name を次のように定義しました。
@Retention(RetentionPolicy.RUNTIME)
public @interface Name {
public String value();
}
この注釈と基本抽象クラス CommonPlugin を別のモジュールに入れ、JAR ファイルとしてビルドして開発者と共有します。
次に、パッケージをインポートし、次のように me test プラグインの定義の前にこの注釈を付けます。
@Name("Test plugin")
public class TestPlugin extends CommonPlugin {
次に、指定されたすべてのプラグインを反映しURLClassLoader
、TestPlugin クラスで必要なアノテーションを見つけることができません。しかし、TestPlugin クラスと同じパッケージに Name アノテーションを定義すると、それを見つけることができます。そうあるべきですか、それとも何か間違っていますか?