Использование объявления @interface по умолчанию в Java

Я только что обнаружил эту особенность.

Объявление интерфейса с использованием синтаксиса «@interface» позволяет указать значение по умолчанию.

public @interface HelloWorld { 
     public String sayHello() default "hello world";
}

Для меня это что-то новенькое. Как предполагается использовать это значение по умолчанию.

Я не могу найти ссылки на это, потому что www заполнен документами интерфейса java до добавления "@" в Java 1.5 (это было на .5 или в .4?)


РЕДАКТИРОВАТЬ

Спасибо за ответы (я как-то был близок к «аннотации», потому что уже использую тег): P

Я знал, что должен был прочитать этот документ много лет назад !!! ... посмотрим ...

Многие API требуют изрядного количества шаблонного кода. Для....

Ответов (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.