ホームページ  >  記事  >  Java  >  Javaリフレクションでメソッドを取得する方法

Javaリフレクションでメソッドを取得する方法

anonymity
anonymityオリジナル
2019-05-08 15:02:064666ブラウズ

Java のリフレクション メカニズムとは何ですか?

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

クラスを分析するには、まずクラスのバイトコード ファイル オブジェクトを取得する必要があります。この解説では Class クラスのメソッドを使用します。そのため、まず各バイトコード ファイルに対応する Class 型のオブジェクトを取得する必要があります。

リフレクションとは、Java クラス内のさまざまなコンポーネントを Java オブジェクトにマッピングすることです

例: クラスには、メンバー変数、メソッド、コンストラクター、パッケージ、およびその他の情報があります。リフレクション テクノロジーを使用して、クラスを分析し、各コンポーネントをオブジェクトにマッピングできます。

この図は、クラスの通常の読み込みプロセスを示しています。リフレクションの原理はクラス オブジェクトにあります。

読み込みに慣れましょう: Class オブジェクトの起源は、クラス ファイルをメモリに読み取り、そのクラス オブジェクトを作成することです。

Javaリフレクションでメソッドを取得する方法

クラス オブジェクトを取得する 3 つの方法

1.1 オブジェクト ——> getClass();

1.2すべてのデータ型 (基本データ型を含む) には「静的」クラス属性があります。

1.3 Class クラスの静的メソッドを通じて: forName (String className) (一般的に使用されます)

ここで、1.1 はObject クラスの getClass メソッドのため、すべてのクラスが Object クラスを継承するためです。したがって、オブジェクト クラスを呼び出して

Example: リフレクションを通じてクラスによって定義されたメソッドを呼び出す

@Test
    // 通过反射调用类定义的方法
    public void testInvokeMethod() throws Exception {
        Class clazz = Class.forName("java.lang.String");
        // 定义参数类型
        Class[] params = new Class[1];
        params[0] = String.class;
        Method m = clazz.getDeclaredMethod("indexOf", params);
        // 设置参数
        Object[] p = new Object[1];
        p[0] = "e";
        Integer s = (Integer) m.invoke("helloworld!", p);
        System.out.println(s);
    }

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

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