首頁 >Java >java教程 >Java 8中如何取得參數名稱的方法範例

Java 8中如何取得參數名稱的方法範例

高洛峰
高洛峰原創
2017-01-22 11:03:342157瀏覽

前言

在Java 8之前的版本,程式碼編譯為class檔案後,方法參數的型別是固定的,但參數名稱卻遺失了,這和動態語言嚴重依賴參數名稱形成了鮮明對比。現在,Java 8開始在class檔案中保留參數名,為反射帶來了極大的便利。

範例:

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

參數名稱被編譯進了class文件,取代了早期版本裡無意義的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中,可以透過Compiler選項開啟:

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

注意:此功能必須把程式碼編譯成1.8版本的class才行。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或工作能帶來一定的幫助,如果有疑問大家可以留言交流。

更多Java 8中如何取得參數名稱的方法範例相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn