ИМХО, это одна из лучших вещей, которую вы можете использовать в Java, и они спасают меня целую вечность.Я приведу вам пример: несколько дней назад я писал приложение для обработки изображений.Все фильтры расширили базовый класс с именем Filter, и многие из них имели такие свойства, как контрастность, яркость и т. Д. Теперь каждое свойство будет иметь значение по умолчанию, диапазон с min и max, имя, подходящее для графического интерфейса.Кроме того, в фильтрах есть свойства, которые я хотел, чтобы графический интерфейс предоставлял через элементы управления, а другие - нет.Поэтому я создал @FilterPropertyAnnotation, которую вы бы использовали следующим образом:
...
@FilterAnnotation(name = "Image contrast", default = 0.0D, min = -100D, max = 100D)
public double getContrast(){
...
}
Затем, используя отражение, каждый раз, когда пользователь выбирает фильтр в графическом интерфейсе, он сканирует методы подкласса Filter, чтобы увидеть, какие из них имеютаннотации и отображать соответствующие элементы управления только для свойств, которые я пометил с аннотацией, все с правильным значением по умолчанию и масштаб.Я не могу придумать более простой или быстрый способ сделать что-нибудь подобное.
Аннотации для меня - лучшая вещь в Java.