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

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

Linda Hamilton
リリース: 2024-11-07 17:22:02
オリジナル
382 人が閲覧しました

How can you retrieve Java method parameter names using reflection in Java 8?

リフレクションによる Java メソッド パラメータ名の取得

Java では、デフォルトではメソッド パラメータ名にアクセスできないため、リフレクションを使用してメソッド パラメータ名を取得できるかどうかという疑問が生じます。 .

パラメータ リフレクションを使用した Java 8 ソリューション

Java 8 より前では、リフレクションを介してパラメータ名にアクセスすることは不可能でした。しかし、Java 8 でパラメータリフレクションが導入されたことで、それが可能になりました。次のコードは、パラメーター名を取得する方法を示しています。

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

public class ParameterReflection {

    public static void main(String[] args) {
        Class<?> clazz = Whatever.class;

        Method[] methods = clazz.getDeclaredMethods();
        for (Method method : methods) {
            if (method.getName().equals("aMethod")) {
                Parameter[] parameters = method.getParameters();
                for (Parameter parameter : parameters) {
                    System.out.println(parameter.getName());
                }
                break;
            }
        }
    }
}
ログイン後にコピー

この例では、Whatever クラスに、 という名前の整数パラメーターを持つ aMethod メソッドが含まれています。 aParam。 Method.getParameters() メソッドを使用すると、メソッドの各パラメータを表す Parameter オブジェクトの配列とその名前を取得できます。

コンパイラ フラグ (-parameters)

これは重要ですJava 8 では、実行時にパラメータ名にアクセスできるようにコンパイラ フラグ -parameters を有効にする必要があることに注意してください。 Maven プロジェクトでは、このフラグを に追加できます。 configuration:

<compilerArgument>-parameters</compilerArgument>
ログイン後にコピー

また、3.6.2 より新しい Java 8 バージョンのコンパイラでは、:

<parameters>true</parameters>
ログイン後にコピー

結論

Java 8 でのパラメーター リフレクションの導入により、リフレクション経由でメソッドのパラメーター名を取得できるようになりました。 Parameter クラスと -parameters コンパイラ フラグを使用すると、実行時にパラメータ名にアクセスできます。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート