ホームページ  >  記事  >  Java  >  Java のリフレクション メカニズムとその取得方法について

Java のリフレクション メカニズムとその取得方法について

王林
王林転載
2023-05-10 19:07:041673ブラウズ

Java リフレクション メカニズム

Java リフレクション メカニズムは実行状態にあります。どのクラスについても、このクラスのすべてのプロパティとメソッドを取得でき、どのオブジェクトについても、そのクラスのプロパティおよびメソッドを呼び出すことができます。 。 方法。この動的に情報を取得し、実行時にオブジェクトのメソッドを動的に呼び出す機能を Java のリフレクション機構と呼びます。

Class クラスは、フィールド、メソッド、およびコンストラクター クラス (各クラスは Member インターフェイスを実装します) を含む java.lang.reflect クラス ライブラリとともにリフレクションの概念をサポートします。これらのタイプのオブジェクトは、実行時に JVM によって作成され、未知のクラスの対応するメンバーを表します。このようにして、コンストラクターを使用して新しいオブジェクトを作成し、get() メソッドと set() メソッドを使用して Field オブジェクトに関連付けられたフィールドを読み取りおよび変更し、invoke() メソッドを使用して Method オブジェクトに関連付けられたメソッドを呼び出すことができます。

さらに、getFields() getMethods() や getConstructors() などの便利なメソッドを呼び出して、フィールド、メソッド、コンストラクターを表すオブジェクトの配列を返すこともできます。このようにして、匿名オブジェクト
に関する情報は実行時に完全に決定できるため、コンパイル時には何も知る必要がありません。

package com.microSpringboot.ReadingList.reflect;

import java.lang.reflect.Constructor;

public class ReflectTest {

    public static void main(String[] args) throws Exception {
        Class clazz = null;
        clazz = Class.forName("com.microSpringboot.ReadingList.reflect.Fruit");
        Constructor<Fruit> constructor1 = clazz.getConstructor();
        Constructor<Fruit> constructor2 = clazz.getConstructor(String.class);
        Fruit fruit1 = constructor1.newInstance();
        Fruit fruit2 = constructor2.newInstance("Apple");
    }
}


class Fruit {

    public Fruit() {
        System.out.println("无参构造器 Run...........");
    }

    public Fruit(String type) {
        System.out.println("有参构造器 Run..........." + type);
    }
}
运行结果: 无参构造器 Run……….. 有参构造器 Run………..Apple

Java でリフレクションを取得する 3 つの方法

1. 新しいオブジェクトを通じてリフレクション メカニズムを実装します

2. パスを通じてリフレクション メカニズムを実装します

3. クラス名は反映メカニズムを実装します

package com.microSpringboot.ReadingList.reflect;

public class Student {
    private int id;
    private String name;
    protected boolean sex;
    public float score;

}
package com.microSpringboot.ReadingList.reflect;

public class Get {

    //获取反射机制三种方式
    public static void main(String[] args) throws ClassNotFoundException {
        //方式一(通过建立对象)
        Student student = new Student();
        Class stuClass1 = student.getClass();
        System.out.println(stuClass1.getName());
        //方式二(所在通过路径-相对路径)
        Class stuClass2 = Class.forName("com.microSpringboot.ReadingList.reflect.Student");
        System.out.println(stuClass2.getName());
        //方式三(通过类名)
        Class stuClass3 = Student.class;
        System.out.println(stuClass3.getName());
    }
}

以上がJava のリフレクション メカニズムとその取得方法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。