Pull to refresh

Comments 8

Как абсолютный 0 в Java интересно - придумал ли кто-то аннотацию которая выкидывает из результирующего кода класс/метод при компиляции с определенными параметрами?

Например нужно собирать несколько версий библиотеки из одной кодовой базы. Релизный для разработчиков и debug для тестировщиков. Для релизного нужно выкинуть методы манипулирования с сырыми данными.

Разметить бы из каким-нибудь @DebugOnlyи вычищать в релизных сборках.

Можно юзать разные Spring-профили. Дебажные методы вынести в отдельные бины и поставить им профиль, отличающийся от prod.

В java есть package-private методы, обычно их достаточно для таких случаев. Ну или унаследовать класс и сделать нужные методы публичными, некрасиво, но для тестов пойдёт. Или просто вызывать их с помощью рефлексии - тоже только для тестов вполне себе решение.

Нельзя унаследоваться от класса и «сделать нужные методы публичными». Дочерний класс не знает ничего о приватных методах родительского класса. То есть конечно можно в дочернем классе создать абсолютно такой же метод как в родительском, но это не будет переопределением. Можете поставить Override и убедиться.

Ну да, неоднозначно получилось, так просто нельзя, плохо написал.

Методы по по аннотациям выкидывать не получится да и не нужно особенно.

Как правило для метаданных используют и аспектов.

Аннотации - это форма метаданных. Они предоставляют информацию о программе, при том сами частью программы не являются.

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

Ну от того что их часто используют, они не перестают быть метаданными.

Sign up to leave a comment.

Articles