Java-аннотации - библиотека или функция языка? - PullRequest
2 голосов
/ 16 сентября 2011

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

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

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

Ответы [ 3 ]

2 голосов
/ 16 сентября 2011

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

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

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

С JLS & 9.9.1, Предопределенные типы аннотаций :

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

Если подумать так, я бы сказал, что аннотации Java - это библиотека функция.

2 голосов
/ 16 сентября 2011

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

0 голосов
/ 16 сентября 2011

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

Например, например, вы хотите, чтобы EJB оставался без состояния, теперь вам просто нужно добавить аннотацию @Stateless.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...