前書き
Java 8 より前のバージョンでは、コードがクラス ファイルにコンパイルされた後、メソッドのパラメーターの型は固定されますが、パラメーター名は失われます。これは、パラメーターに大きく依存する動的言語とは大きく異なります。名前。 Java 8 ではクラス ファイル内にパラメータ名が保持されるようになり、リフレクションに非常に便利になりました。
例:
public class GetRuntimeParameterName { public void createUser(String name, int age, int version) { // } public static void main(String[] args) throws Exception { for (Method m : GetRuntimeParameterName.class.getMethods()) { System.out.println("----------------------------------------"); System.out.println(" method: " + m.getName()); System.out.println(" return: " + m.getReturnType().getName()); for (Parameter p : m.getParameters()) { System.out.println("parameter: " + p.getType().getName() + ", " + p.getName()); } } } }
Method.getParameters は、パラメータ名を含むパラメータ情報を取得できる 1.8 の新しいメソッドです。
上記のコードによって出力される createUser パラメーターは次のとおりです:
method: createUser return: void parameter: java.lang.String, name parameter: int, age parameter: int, version
パラメーター名はクラス ファイルにコンパイルされ、初期バージョンの無意味な arg0 と arg1 が置き換えられます...
に依存する多くのフレームワークの場合パラメータ名を追加すると、さらに簡略化できます コード:
@Path("/groups/:groupid/:userid") public User getUser(String groupid, String userid) { ... }
パラメータ名がない場合は、アノテーションを追加する必要があります:
@Path("/groups/:groupid/:userid") public User getUser(@Param("groupid") String groupid, @Param("userid") String userid) { ... }
残念ながら、パラメータ名を保持するオプションはコンパイル スイッチ javac -parameters によってオンになります。 、デフォルトではオフになっています。
Eclipse では、コンパイラー オプションを使用して開くことができます:
注: この関数はコードをバージョン 1.8 クラスにコンパイルする必要があります。
概要
上記がこの記事の全内容です。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。ご質問がある場合は、メッセージを残して連絡してください。
Java 8 でパラメーター名を取得する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。