ホームページ > Java > &#&チュートリアル > Java 8でパラメータ名を取得する方法の例

Java 8でパラメータ名を取得する方法の例

高洛峰
リリース: 2017-01-22 11:03:34
オリジナル
2171 人が閲覧しました

前書き

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 では、コンパイラー オプションを使用して開くことができます:

Java 8中如何获取参数名称的方法示例

注: この関数はコードをバージョン 1.8 クラスにコンパイルする必要があります。

概要

上記がこの記事の全内容です。この記事の内容が皆さんの学習や仕事に少しでも役立つことを願っています。ご質問がある場合は、メッセージを残して連絡してください。

Java 8 でパラメーター名を取得する方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

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