Определить, какой параметр в конструкторе использовался для установки поля Specifi c в классе? - PullRequest
1 голос
/ 03 марта 2020

Я работаю над созданием пользовательской Java инфраструктуры персистентности объектов, как я недавно обсуждал в этом вопросе .

Одна проблема, которую я пытаюсь решить, - это принудительное использование единообразных значений аннотаций. через параметр конструктора и соответствующее поле в классе.

Можно ли узнать, какой параметр в конструкторе использовался для задания определенного c поля в классе с помощью отражения? Например, если конструктор содержит параметр String textXYZ, а класс содержит поле String textABC, а в конструкторе я делаю: textABC = textXYZ (поэтому поля / параметры имеют разные имена). Можно ли узнать, что поле textABC связано с параметром конструктора textXYZ через отражение?

Это позволило бы мне установить аннотацию только для поля, а затем вывести значение аннотации для параметра или наоборот ..

Спасибо

1 Ответ

0 голосов
/ 11 марта 2020

Начиная с Java 7, для этой цели есть аннотация: ConstructorParameters. Помещенный в конструктор, он показывает, как параметры этого конструктора соответствуют методам получения построенного объекта . Вы можете осмотрительно проверить эту аннотацию и затем определить, какие поля связаны между собой. Конечно, никто не заставляет конструктора аннотироваться, но это единственный стандартный способ сопоставления полей и параметров ctor. Многие инструменты, такие как Jackson, Jsonb et c имеют собственные аннотации для той же цели.

...