Понятия аннотации в Java - PullRequest
       0

Понятия аннотации в Java

0 голосов
/ 08 августа 2011

Цитировать ссылку :

Некоторые разработчики считают, что компилятор Java понимает тег и работать соответственно. Это неправильно. Теги на самом деле не имеют смысла в компилятор Java или саму среду выполнения. Есть инструменты, которые могут интерпретировать эти теги

.

Если информация, содержащаяся в аннотации, является только метаданными, почему мой код не будет компилироваться, если я неправильно аннотирую? Эта конкретная аннотация должна быть просто проигнорирована, верно?

Редактировать:

Просто в качестве примера ... Простой веб-сервис JAX-RS на Джерси использует аннотацию, такую ​​как:

@Path("mypath")

Теперь, если я изменю это на:

@Paths("mypath")

OR

@Path(123)

это НЕ должно помешать мне скомпилировать код по вышеуказанной ссылке ...

Ответы [ 2 ]

5 голосов
/ 08 августа 2011

Статья неверна хотя бы для некоторых аннотаций. Думает, что @SuppressWarnings и @Override компилятор обладает очень специфическими знаниями. Фактически, статья сама указывает на это:

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

Как он может использоваться компилятором, если "теги на самом деле не имеют значения для компилятора Java", я не знаю ...

Кроме того, даже для аннотаций, к которым компилятор не присоединяет никакой семантической , означающей , он все равно будет проверять, что при попытке указать конкретные аргументы и т. Д., Что эти аргументы имеют разумные имена и типы для аннотация, которую вы используете.

0 голосов
/ 08 августа 2011

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

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