ホームページ > Java > &#&チュートリアル > Java で特定のインターフェイスを実装するクラスをプログラムで見つけるにはどうすればよいですか?

Java で特定のインターフェイスを実装するクラスをプログラムで見つけるにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-08 22:00:23
オリジナル
630 人が閲覧しました

How Can I Programmatically Find Classes Implementing a Specific Interface in Java?

Java でプログラムによるインターフェイス実装のクエリ

インターフェイスを実装するクラスのリストを取得するのは難しい場合があります。幸いなことに、Java では、このクエリに対処するためのいくつかのアプローチが提供されています。

Reflections ライブラリの使用:

Reflections は、開発者がクラスやデータに関するメタデータを検査および操作できるようにする人気のライブラリです。パッケージ。リフレクションを使用すると、特定のインターフェイスを実装するサブクラスのリストを取得できます。

Reflections reflections = new Reflections("my.package");
Set<Class<? extends Pet>> classes = reflections.getSubTypesOf(Pet.class);
ログイン後にコピー

ServiceLoader の活用:

ServiceLoader は、互換性のある実装を検出するためのプラットフォームに依存しないメカニズムを提供します。サービスプロバイダーインターフェイスの。このアプローチでは、インターフェイスをサービス プロバイダー インターフェイスとして定義し、その実装を宣言する必要があります。このインフラストラクチャをセットアップした後、次のように実装を取得できます:

ServiceLoader<Pet> loader = ServiceLoader.load(Pet.class);
for (Pet implClass : loader) {
    System.out.println(implClass.getClass().getSimpleName());
}
ログイン後にコピー

パッケージ レベルのアノテーションの使用:

パッケージ レベルのアノテーションは、アノテーションを付ける方法を提供します。メタデータを含むパッケージ。この機能を利用して、パッケージに含まれるクラスに関する情報をパッケージにタグ付けできます。このアプローチを利用するには:

  1. 実装クラスを識別するためのカスタム アノテーションを定義します:

    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.PACKAGE)
    public @interface MyPackageAnnotation {
        Class<?>[] implementationsOfPet() default {};
    }
    ログイン後にコピー
  2. アノテーションを適切なパッケージに適用します。ソースコード:

    @MyPackageAnnotation(implementationsOfPet = {Dog.class, Cat.class})
    package my.package;
    ログイン後にコピー
  3. クエリ実装されたクラス:

    Package[] packages = Package.getPackages();
    for (Package p : packages) {
        MyPackageAnnotation annotation = p.getAnnotation(MyPackageAnnotation.class);
        if (annotation != null) {
            Class<?>[] implementations = annotation.implementationsOfPet();
            System.out.println("Found implementation: " + implementations[0].getSimpleName());
        }
    }
    ログイン後にコピー

これらの手法により、指定されたインターフェイスを実装するクラスのリストを柔軟に取得できます。

以上がJava で特定のインターフェイスを実装するクラスをプログラムで見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート