Parameter
. По умолчанию их свойство name
синтетическое: "arg0"
, "arg1"
, и так далее. Метод isNamePresent
при этом возвращает false
, что значит что действительная информация об имени недоступна. Она не попадает даже в байт-код.Начиная с Java 8 у компилятора (
javac
) появилась опция -parameters
. В скомпилированный с этой опцией класс добавляются имена аргументов методов. Parameter#getName()
тогда возвращает уже настоящее имя.Классический пример, когда информация об именах может понадобиться – библиотека JSON сериализации Jackson. Параметры конструктора могут трактоваться ей как поля сериализационной формы.
До появления флага
-parameters
Jackson использовал для этого аннотации. Каждый параметр снабжался аннотацией @JsonProperty
. Значением аннотации передавалась строка, которая повторяла имя параметра. Эти аннотации затем можно было получить, вызвав Method#getParameterAnnotations()
.