Java 8 добавила возможности рефлексии для получения имён параметров во время выполнения программы через метод Parameter.getName(). Эта фича требует явной настройки компилятора, чтобы работать как надо.
Чтобы сохранить имена параметров, компилируй свой код с флагом -parameters:
javac -parameters YourFile.java
Этот флаг говорит Java-компилятору сохранить имена параметров в скомпилированный байт-код, чтобы их можно было получить через рефлексию.
После компиляции с флагом -parameters ты можешь получить имена параметров вот так:
Parameter[] params = method.getParameters();
String paramName = params[0].getName();
Перед тем как пытаться получить имена параметров, проверь доступность фичи через метод isNamePresent():
if (param.isNamePresent()) {
String name = param.getName();
}
Эта проверка гарантирует, что имя параметра действительно есть в скомпилированном классе, и ты не получишь неожиданный null или пустую строку.
-parameters для компилятора обязателен для работы этой фичиisNamePresent() перед тем как обращаться к именам параметровИмена параметров автоматически сохраняются в скомпилированном bytecode по умолчанию без какой-либо специальной конфигурации компилятора.
Новый — ещё не проверен сообществом
Вы