ホームページ  >  記事  >  Java  >  Java リフレクション メカニズムはリフレクター自体とどのように連携するのでしょうか?

Java リフレクション メカニズムはリフレクター自体とどのように連携するのでしょうか?

WBOY
WBOYオリジナル
2024-05-04 08:57:02457ブラウズ

Java リフレクション メカニズムを使用すると、リフレクター自体を探索でき、メソッド オブジェクトのアノテーション (アノテーションのタイプと値を含む) をリフレクションを通じて取得できます。

Java リフレクション メカニズムはリフレクター自体とどのように連携するのでしょうか?

#Java リフレクション メカニズムはリフレクター自体で使用されます

Java リフレクション メカニズムにより、プログラムはリフレクターの構造を検査および変更できます。ただし、リフレクション メカニズム自体を調べるために使用されることはほとんどありません。この記事では、実際のケースを使用して、反射メカニズムを使用してリフレクターの動作を研究する方法を示します。

ケース: Method オブジェクトの Annotation

を取得する

を取得するには、リフレクションを使用できます。 Method オブジェクトにアタッチされた注釈。サンプルコードは次のとおりです:

import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

public class Main {
    public static void main(String[] args) {
        try {
            // 获取 Method 对象
            Method method = Main.class.getMethod("annotatedMethod");
            
            // 使用反射获取注解
            Annotation[] annotations = method.getAnnotations();
            
            // 遍历并打印注解
            for (Annotation annotation : annotations) {
                System.out.println(annotation);
            }
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
    }
    
    @MyAnnotation("Hello, World!")
    public void annotatedMethod() { }
}

結果:

@MyAnnotation(value=Hello, World!)

解析:

    最初に ## を使用します。 # Main.class.getMethod("annotatedMethod")
  • Main クラスの annotatedMethod メソッドの Method オブジェクトを取得します。 次に、
  • method.getAnnotations()
  • を使用してメソッドのすべてのアノテーションを取得し、それらを annotations 配列に保存します。 最後に、
  • annotations
  • 配列をループし、各注釈のタイプと値を出力します。
  • この例では、リフレクション メカニズムを使用して
Method

オブジェクトの注釈を取得する方法を示します。同じ原理を使用して、リフレクション メカニズムの他の側面を調べることができます。たとえば、次のようになります。

クラスの親クラスとインターフェイスを取得します。
  • クラスの型と値を取得します。フィールド
  • クラスの属性(アクセス権限など)を変更します
  • #

以上がJava リフレクション メカニズムはリフレクター自体とどのように連携するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。