Comments 8
Как абсолютный 0 в Java интересно - придумал ли кто-то аннотацию которая выкидывает из результирующего кода класс/метод при компиляции с определенными параметрами?
Например нужно собирать несколько версий библиотеки из одной кодовой базы. Релизный для разработчиков и debug для тестировщиков. Для релизного нужно выкинуть методы манипулирования с сырыми данными.
Разметить бы из каким-нибудь @DebugOnlyи вычищать в релизных сборках.
Можно юзать разные Spring-профили. Дебажные методы вынести в отдельные бины и поставить им профиль, отличающийся от prod.
В java есть package-private методы, обычно их достаточно для таких случаев. Ну или унаследовать класс и сделать нужные методы публичными, некрасиво, но для тестов пойдёт. Или просто вызывать их с помощью рефлексии - тоже только для тестов вполне себе решение.
Методы по по аннотациям выкидывать не получится да и не нужно особенно.
Как правило для метаданных используют и аспектов.
Аннотации - это форма метаданных. Они предоставляют информацию о программе, при том сами частью программы не являются.
Откуда такое определение пошло ? В любом случае, применительно к java - оно не верно. Аннотации в наше время используются все чаще, притом именно в ходе выполнения программы. Не зря для этого есть целый набор для работы с аннотациями.
Аннотации в JAVA