Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpAnTg 121 of 322 menu
◀ ▶

Место пометки в Java

Свой тип метки по умолчанию можно ставить почти на любое объявление. Чтобы запретить лишние места, на @interface вешают метку @Target со списком значений ElementType.

Если метка нужна только на методах, объявление типа ограничивают одной целью:

import java.lang.annotation.ElementType; import java.lang.annotation.Target; @Target(ElementType.METHOD) @interface Action { String name(); }

Несколько целей перечисляют в фигурных скобках. Такую метку можно повесить и на класс, и на метод:

import java.lang.annotation.ElementType; import java.lang.annotation.Target; @Target({ElementType.TYPE, ElementType.METHOD}) @interface Owner { String team(); } @Owner(team = "billing") class InvoiceService { @Owner(team = "billing") void charge() { } }

Для полей и параметров методов используют отдельные константы FIELD и PARAMETER. Метка на параметре не переносится на поле класса автоматически:

import java.lang.annotation.ElementType; import java.lang.annotation.Target; @Target(ElementType.PARAMETER) @interface Doc { String note(); } class ProfileService { void rename(@Doc(note = "public handle") String handle) { } }

Попытка поставить метку не на ту цель даёт ошибку компиляции. Если @Target разрешает только методы, подпись на классе не пройдёт проверку.

Объявите метку только для ElementType.TYPE с элементом note. Повесьте её на класс заказа и убедитесь, что на метод она не ставится.

Создайте метку для FIELD и PARAMETER. Подпишите строковое поле класса и одноимённый параметр конструктора с разными строками.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить