Используют ли какие-либо библиотеки Java аннотации для генерации кода?
-
19-09-2019 - |
Вопрос
Кто-нибудь знает о библиотеке, которая использует методы (аннотации и работу с классами), описанные в Эта статья для автоматического создания стандартных методов объекта toString(), Equals() и hashcode() для стандартных классов Java?
Решение
Да, проект Ломбок делает это.Видеть http://projectlombok.org .Он поддерживает не только Javac, но и Eclipse.Таким образом, методы не находятся в исходном коде, а отображаются в виде структуры.
Другие советы
Я, конечно, этого не видел и не совсем уверен, какую пользу это принесет.Я нахожу это автоматическим toString
поколение обычно не что вы хотите при просмотре файлов журналов, и большинство IDE имеют инструменты, позволяющие генерировать hashCode
и equals
реализации, хотя и предоставлены, они не отражают автоматически какие-либо изменения схемы внутри вашего класса.
Вариантов реализации будет 2:
- Аннотация класса времени компиляции, которая обрабатывается (например.вашей IDE) для создания соответствующих методов. Могут ли аннотации изменять сгенерированный байт-код классов, в которых они объявлены? Я думаю, что этот подход - действительно плохая идея, потому что вы не можете сказать, что происходит, глядя на исходный код.
- Аннотация времени выполнения соответствующих методов, указывающая, что их следует оценивать с помощью специального механизма.Это по-прежнему требует от вас объявления и аннотирования ваших методов, и я также не уверен, как бы вы это сделали на самом деле. перехватывать вызовы методов для использования аннотации в любом случае