На техническом уровне, какие препятствия мешают аннотациям иметь методы по умолчанию с реальной логикой?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 На техническом уровне, какие препятствия мешают аннотациям иметь методы по умолчанию с реальной логикой?

Сообщение Anonymous »

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

Код: Выделить всё

public @interface Foo {
int value() default 1;
}
Однако аннотации не могут иметь методы с реальным телом, даже помеченные по умолчанию.

Код: Выделить всё

public @interface Foo {
int value() default 1;

default int add(int addend) { // NOT ALLOWED
return value() + addend;
}
}
Спецификация языка Java указывает, что это запрещено в разделе 9.6.1:

В соответствии с приведенной выше грамматикой объявление метода в объявлении интерфейса аннотации не может иметь формальные параметры, параметры типа или предложение throws; и не может быть частным, стандартным или статичным. Таким образом, интерфейс аннотаций не может иметь такое же разнообразие методов, как обычный интерфейс.

Какие технические причины затрудняют это? или невозможно поддержать, если таковые имеются? Я не спрашиваю, почему разработчики Java могли решить, что они не хотят поддерживать это — я прекрасно понимаю, что это не лучший вопрос для StackOverflow — но только если есть конкретные известные проблемы. это может помешать разработчикам JDK добавить такую ​​функцию.

Подробнее здесь: https://stackoverflow.com/questions/790 ... efault-met
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»