Подтвердить что ты не робот

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

Я только что открыл эту функцию.

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

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

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

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


ИЗМЕНИТЬ

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

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

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

4b9b3361

Ответ 1

Вы только что написали annotation.

Что касается оператора default в частности: это используется, потому что аннотации и интерфейсы не могут иметь конструкторы, поэтому это единственный способ получить значение по умолчанию для атрибута аннотации. Из Спецификация языка Java:

Элемент типа аннотации может иметь заданное по умолчанию значение по умолчанию. Это делается путем его (пустого) списка параметров с ключевым словом default и значением по умолчанию для элемента.

Значения по умолчанию применяются динамически во время чтения аннотаций; значения по умолчанию не компилируются в аннотации. Таким образом, изменение значения по умолчанию влияет на аннотации даже в классах, которые были скомпилированы до изменения (предполагается, что эти аннотации не имеют явного значения для элемента по умолчанию).

Я отмечаю, что ни одна из аннотаций в java.lang.annotation не использует значения по умолчанию.


Использование: У вас есть аннотация @HelloWorld с атрибутом sayHello. Вы можете поместить его в класс следующим образом:

@HelloWorld(sayHello="Hi")
public class MyClass {
}

Поскольку у вас есть значение по умолчанию, вы можете просто поместить

@HelloWorld
public class MyClass {
}

(Обратите внимание, что в документе говорится: "В аннотациях с одним элементом этот элемент должен быть назван value"; я полагаю, что единственная причина для этого - просто написать @HelloWorld("Hi"), не указывая параметр.)

Как написано, ваша аннотация может использоваться для любого действительного элемента программы (включая методы и объявления переменных). Вы можете изменить это с помощью аннотации @Target.

Наконец, установка RetentionPolicy позволяет вам решить, должна ли аннотация быть отброшена компилятором, отброшена VM или сохранена всегда.


Два пакета, которые также могут быть интересны: javax.annotation и javax.annotation.processing. И здесь является примером использования обработки аннотаций для анализа исходного кода.

Ответ 2

Чтобы annotation, вы объявляете не интерфейс. Он был добавлен в Java 1.5.