2011-09-16 2 views
2

Должны ли Java-аннотации считаться языком или библиотекой. Я не имею в виду самую концепцию аннотаций, которая, очевидно, является языковой особенностью, но конкретные аннотации, такие как @Override и @Deprecated?java аннотации - библиотека или язык?

Похоже, что аннотации, поддерживаемые только сторонними библиотеками (например, аннотации Hibernate), явно не являются частью языка Java, но для встроенных аннотаций я не уверен.

Если это считается слишком дискурсивной, не стесняйтесь, чтобы перейти к programmers.stackexchange.com

ответ

2

Вот как я думаю об этом:

boolean isLanguageFeature(foo) 
{ 
    return JLS.contains(foo) 
} 

JLS описывает Java язык программирования. Как вы ясно понимаете, концепция аннотаций - это функция . С другой стороны, существует множество стандартных функций библиотеки Java, которые не описываются JLS, такие как API коллекций.

От JLS §9.6.1, Predefined Annotation Types:

Несколько типов аннотаций предопределены в библиотеках платформы Java. Некоторые из этих предопределенных типов аннотаций имеют специальную семантику. Эти семантики указаны в этом разделе. В этом разделе не содержится полная спецификация предопределенных аннотаций, содержащихся здесь; то есть роль соответствующих спецификаций API. Здесь указаны только те семантики, которые требуют особого поведения со стороны компилятора Java или виртуальной машины.

мышления вдоль этих линий, то я бы сказал, что Java аннотации являются библиотеки особенности.

-1

аннотаций используются (в Java) для добавления метаданных в ваш код. Аннотации - это способ писать читаемый и поддерживаемый код. Поэтому, чтобы писать хорошие комментарии к использованию кода, они являются аннотациями Java или любой другой третьей стороной.

, например. как сделать EJB без гражданства, теперь вам просто нужно добавить аннотацию @Stateless.

+2

Я считаю, что его вопрос больше связан с природой аннотаций Java, а не тем, что они есть или когда они должны использоваться. –

+0

Согласовано с @tke. ОП четко понимает, как и почему использовать аннотации. Этот ответ упускает этот вопрос и полностью не завершается в любом случае. –

2

аннотаций нравится @Deprecated и @Override библиотечные функции, которые происходят, которые будут использоваться языковыми средствами для обеспечения и/или описать поведение кода. Определенно функции библиотеки.

+0

Я согласен с вами, но на самом деле вы не предоставили никаких аргументов. –

+2

Они находятся в стандартной библиотеке Java. По определению, они являются библиотечными функциями. Думаю, я не очень хочу поддерживать это. –

+0

Вспомогательный аргумент: '@ Override', скорее всего, является самым обычным из стандартных аннотаций. Тем не менее, если вы написали альтернативный компилятор Java, который полностью игнорирует эту аннотацию, полученный код будет вести себя точно так же, как тот, который генерирует 'javac'. (Предполагая, что это было правильно в первую очередь.) Единственный способ, по которому аннотация может изменить поведение кода, заключается в том, что библиотека (например, Hibernate) обрабатывает их с помощью усилителя байт-кода. – millimoose

Смежные вопросы