Ich wollte den Argumentnamen der Methode mithilfe von Reflection in Java ermitteln, bin aber ein wenig festgefahren. Machen Sie sich also eine Notiz.
Zum Zeitpunkt der Kompilierung musste javac die Option ** - parameters ** haben. Das Verfahren bis zur Überprüfung ist wie folgt.
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
public class GetArgsName {
public static void main(String... args) throws NoSuchMethodException, SecurityException {
Method m = Calc.class.getDeclaredMethod("add", int.class, int.class);
Arrays.stream(m.getParameters())
.map(Parameter::getName).forEach(System.out::println);
}
public static class Calc {
public int add(int x, int y) {
return x + y;
}
}
}
Ich dachte, ich könnte den Argumentnamen mit dem obigen Programm erhalten, und als ich es ausführte, wurde das folgende Ergebnis erhalten.
arg0
arg1
Ich wollte die Argumentnamen x und y erhalten, aber aus irgendeinem Grund habe ich sie mit argN erhalten.
Als Ergebnis verschiedener Untersuchungen wurde Don Pishas Antwort auf der folgenden Seite geschrieben. Herr Hishidama ist mir immer zu Dank verpflichtet. Lol
Wenn Sie den Argumentnamen durch Reflektion erhalten möchten, müssen Sie javac die Option ** - parameters ** hinzufügen. Bei der Ausführung mit Eclipse ist es außerdem in Ordnung, wenn Sie unter Eigenschaften> Java-Compiler des Projekts Folgendes überprüfen.
Durch die erneute Ausführung konnte ich den Argumentnamen wie erwartet wie unten gezeigt erhalten.
x
y
Recommended Posts