在Java中,方法參數名稱預設是無法存取的,這就產生了一個問題:是否可以使用反射來取得它們.
在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 物件陣列。
這很重要需要注意的是,Java 8 需要啟用編譯器標誌 -parameters 以使參數名稱在運行時可存取。在 Maven 專案中,可以將此標誌新增至
<compilerArgument>-parameters</compilerArgument>
或者,在高於3.6.2 的Java 8 版本編譯器中,您可以在
<parameters>true</parameters>
隨著Java 8中參數反射的引入,透過反射取得方法參數名稱現在是可行的。透過使用 Parameter 類別和 -parameters 編譯器標誌,您可以在執行時間存取參數名稱。
以上是如何在 Java 8 中使用反射檢索 Java 方法參數名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!