Heim >Java >javaLernprogramm >Wie können Sie Java-Methodenparameternamen mithilfe von Reflektion in Java 8 abrufen?
In Java sind Methodenparameternamen standardmäßig nicht zugänglich, was zu der Frage führt, ob es möglich ist, sie mithilfe von Reflection abzurufen .
Vor Java 8 war es nicht möglich, über Reflektion auf Parameternamen zuzugreifen. Mit der Einführung der Parameterreflexion in Java 8 wurde dies jedoch möglich. Der folgende Code zeigt, wie Parameternamen abgerufen werden:
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; } } } }
In diesem Beispiel enthält die Klasse Whatever eine Methode aMethod mit einem ganzzahligen Parameter namens aParam. Mit der Methode method.getParameters() können Sie ein Array von Parameterobjekten abrufen, die jeden Parameter der Methode zusammen mit ihren Namen darstellen.
Das ist wichtig Beachten Sie, dass Java 8 die Aktivierung des Compiler-Flags -parameters erfordert, um Parameternamen zur Laufzeit zugänglich zu machen. In Maven-Projekten kann dieses Flag zu den
<compilerArgument>-parameters</compilerArgument>
Alternativ können Sie in Java 8-Versionen des Compilers neuer als 3.6.2 Parameter in
<parameters>true</parameters>
Mit der Einführung der Parameterreflexion in Java 8 ist es nun möglich, Methodenparameternamen über Reflektion zu erhalten. Durch die Verwendung der Parameter-Klasse und des Compiler-Flags -parameters können Sie zur Laufzeit auf Parameternamen zugreifen.
Das obige ist der detaillierte Inhalt vonWie können Sie Java-Methodenparameternamen mithilfe von Reflektion in Java 8 abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!