ホームページ  >  記事  >  Java  >  Java リフレクション メカニズムはどのようにメソッドを呼び出すのでしょうか?

Java リフレクション メカニズムはどのようにメソッドを呼び出すのでしょうか?

王林
王林オリジナル
2024-04-15 16:21:011024ブラウズ

リフレクション メカニズムにより、プログラムは実行時にメソッドを呼び出すことができます。手順は次のとおりです。クラス オブジェクトを取得し、メソッド オブジェクトを取得します。メソッドを呼び出して、オブジェクト インスタンスとパラメータを渡します。リフレクションを使用して、Employee クラスの getName() メソッドを呼び出し、「John Doe」を返します。

Java リフレクション メカニズムはどのようにメソッドを呼び出すのでしょうか?

#Java リフレクション メカニズムはメソッドを呼び出します

Java リフレクション メカニズムを使用すると、プログラムは実行時にクラス情報と動作を取得および変更できます。フレームワーク、テスト、デバッグ ツールで広く使用されています。

リフレクション呼び出しメソッドを使用する

リフレクション呼び出しメソッドは、次の手順で使用できます。

  1. クラスを取得するobject: Class.forName() を使用して、クラスの Class オブジェクトを取得します。
  2. メソッド オブジェクトを取得します: getMethod() または getMethods() を使用して、メソッドの Method オブジェクトを取得します。
  3. メソッドの呼び出し: invoke() メソッドを使用してメソッドを呼び出し、オブジェクト インスタンスとパラメーター (存在する場合) を渡します。

構文

Method method = Class.forName("ClassName").getMethod("methodName", parameterTypes);
Object result = method.invoke(objectInstance, parameters);

ここで:

  • ClassName は呼び出されるクラス名です。
  • methodName は、呼び出されるメソッドの名前です。
  • parameterTypes は、メソッド パラメーターの型の配列です。
  • objectInstance は、メソッドが呼び出されるオブジェクト インスタンスです (メソッドが非静的メソッドの場合)。
  • parameters は、メソッドに渡されるパラメータの配列です。

実際的なケース

次のメソッドを持つ

Employee クラスがあるとします。

public class Employee {
    public String getName() {
        return "John Doe";
    }
}

さて、リフレクション メカニズムを使用して、

getName() メソッドを呼び出します。

Class<?> employeeClass = Class.forName("Employee");
Method getNameMethod = employeeClass.getMethod("getName");
String name = (String) getNameMethod.invoke(new Employee());
System.out.println(name); // 输出:John Doe

この例では、最初に

Employee クラスの Class オブジェクトを取得します。次に、getName() メソッドの Method オブジェクトを取得します。最後に、Employee オブジェクトのインスタンスを作成し、リフレクションを使用して getName() メソッドを呼び出します。

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

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