Использование объявления @interface по умолчанию в Java
Я только что обнаружил эту особенность.
Объявление интерфейса с использованием синтаксиса «@interface» позволяет указать значение по умолчанию.
public @interface HelloWorld {
public String sayHello() default "hello world";
}
Для меня это что-то новенькое. Как предполагается использовать это значение по умолчанию.
Я не могу найти ссылки на это, потому что www заполнен документами интерфейса java до добавления "@" в Java 1.5 (это было на .5 или в .4?)
РЕДАКТИРОВАТЬ
Спасибо за ответы (я как-то был близок к «аннотации», потому что уже использую тег): P
Я знал, что должен был прочитать этот документ много лет назад !!! ... посмотрим ...
Многие API требуют изрядного количества шаблонного кода. Для....
Ответов (2)2
Вы только что написали аннотацию .
Что касается default
инструкции, в частности: это используется, потому что аннотации и интерфейсы не могут иметь конструкторов, поэтому это единственный способ иметь значение по умолчанию для атрибута аннотации. Из спецификации языка Java :
Для элемента типа аннотации может быть указано значение по умолчанию. Это делается путем следования за его (пустым) списком параметров ключевым словом
default
и значением элемента по умолчанию.Значения по умолчанию применяются динамически во время чтения аннотаций; значения по умолчанию не компилируются в аннотации. Таким образом, изменение значения по умолчанию влияет на аннотации даже в классах, которые были скомпилированы до того, как было внесено изменение (предполагая, что эти аннотации не имеют явного значения для элемента по умолчанию).
Я отмечаю, что ни одна из аннотаций в java.lang.annotation не использует значения по умолчанию.
Использование: у вас есть аннотация @HelloWorld
с атрибутом sayHello
. Вы можете поместить его в такой класс:
@HelloWorld(sayHello="Hi")
public class MyClass {
}
Поскольку у вас есть значение по умолчанию, вы можете просто поставить
@HelloWorld
public class MyClass {
}
(Обратите внимание, что в документе говорится: «В аннотациях с одним элементом элемент должен быть назван value
»; я считаю, что единственная причина для этого состоит в том, что вы можете просто писать, @HelloWorld("Hi")
не называя параметр.)
Как написано, ваша аннотация может использоваться в любом допустимом элементе программы (включая объявления методов и переменных). Вы можете изменить это с помощью @Target
аннотации.
Наконец, установка RetentionPolicy
позволяет вам решить, должна ли аннотация быть отброшена компилятором, отброшена виртуальной машиной или сохранена всегда.
Два пакета, которые также могут быть интересны: javax.annotation и javax.annotation.processing . А вот пример использования обработки аннотаций для анализа исходного кода.
Это аннотация, которую вы объявляете, а не интерфейс. Он был добавлен в Java 1.5.