ホームページ  >  記事  >  Java  >  Java リフレクションを使用してメソッドのパラメータ名を取得するにはどうすればよいですか?

Java リフレクションを使用してメソッドのパラメータ名を取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-08 12:39:01968ブラウズ

How Can You Retrieve Method Parameter Names Using Java Reflection?

Java リフレクションでのメソッド パラメータ名へのアクセス

概要:
Java プログラミングでは、これは便利です。クラス内のメソッドのパラメータの名前を知るため。この情報は、デバッグ、ログ記録、コードの依存関係の分析など、さまざまなシナリオで役立ちます。この記事では、Java リフレクションを使用してメソッドのパラメータ名を取得する方法について説明します。

Java 8 のメソッド getParameterNames():
Java 8 以降のバージョンでは、Java .lang.reflect.Parameter クラスは getParameterNames() メソッドを提供します。このメソッドを使用すると、指定されたメソッドのすべてのパラメータの名前を含む String オブジェクトの配列を取得できます。このメソッドを使用するには、まず、対象のメソッドを表す Method オブジェクトを取得する必要があります。

コード例:
次のコードは、getParameterNames() を使用してパラメータを取得する方法を示しています。 aMethod() の名前メソッド:

import java.lang.reflect.Method;
import java.lang.reflect.Parameter;

public class GetParameterNames {

    public static void main(String[] args) throws NoSuchMethodException {

        // Get the Method object for aMethod()
        Method aMethod = Whatever.class.getMethod("aMethod", int.class);

        // Get the Parameter object for the method parameter
        Parameter[] parameters = aMethod.getParameters();

        // Extract the parameter name from the Parameter object
        String parameterName = parameters[0].getName();

        // Print the parameter name
        System.out.println(parameterName);
    }
}

考慮事項:
このアプローチが機能するには、Java コンパイラーを -parameters 引数で呼び出して、クラス ファイル内でパラメーター名の生成を有効にする必要があります。 。この引数は、JDK または Maven ビルド構成内のコンパイラ フラグに追加できます。

古い Java バージョンの代替:
8 より前の Java バージョンでは、メソッド パラメータを取得します。直接の名前はサポートされていません。ただし、実行時に Java クラスを拡張してこの情報にアクセスする方法を提供する、ASM バイトコード操作ライブラリなどのサードパーティ ライブラリがあります。

追加リソース:

  • [公式 Java チュートリアル: メソッド名の取得]パラメータ](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Parameter.html#getName--)
  • [JEP 118: パラメータ名へのアクセスランタイム](https://openjdk.java.net/jeps/118)
  • [パラメータの Javadocクラス](https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Parameter.html)

以上がJava リフレクションを使用してメソッドのパラメータ名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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