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

王林
リリース: 2024-04-15 16:21:01
オリジナル
1014 人が閲覧しました

リフレクション メカニズムにより、プログラムは実行時にメソッドを呼び出すことができます。手順は次のとおりです。クラス オブジェクトを取得し、メソッド オブジェクトを取得します。メソッドを呼び出して、オブジェクト インスタンスとパラメータを渡します。リフレクションを使用して、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!