Сведения о вопросе

Henry

21:46, 29th August, 2020

Теги

java   annotations   glossary    

Java аннотации

Просмотров: 553   Ответов: 9

Какова цель аннотаций в Java? У меня есть это нечеткое представление о них как о чем-то промежуточном между комментарием и реальным кодом. Влияют ли они на программу во время выполнения?

Каковы их типичные обычаи?

Являются ли они уникальными для Java? Существует ли эквивалент C++?



  Сведения об ответе

prince

23:12, 1st August, 2020

Аннотации в основном используются кодом, который проверяет другой код. Они часто используются для изменения (например, декорирования или упаковки) существующих классов во время выполнения, чтобы изменить их поведение. Такие фреймворки, как JUnit и Hibernate , используют аннотации, чтобы минимизировать объем кода, который необходимо написать самому, чтобы использовать фреймворки.

Oracle имеет хорошее объяснение понятия и его значения в Java на их сайте.


  Сведения об ответе

darknet

10:57, 15th August, 2020

Кроме того, они уникальны для Java, есть ли эквивалент C++?

Нет, но VB и C# имеют атрибуты , которые являются одним и тем же.

Их применение довольно разнообразно. Один типичный пример Java, @Override не влияет на код, но он может быть использован компилятором для создания предупреждения (или ошибки), если оформленный метод фактически не переопределяет другой метод. Аналогичным образом, методы могут быть помечены как устаревшие.

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

Атрибуты /EDIT: в классах сопоставимы с интерфейсами тегов (например, Сериализуемыми в Java). Однако в руководстве по кодированию .NET говорится, что не следует использовать интерфейсы тегов. Кроме того, они работают только на уровне класса, а не на уровне метода.


  Сведения об ответе

PIRLO

06:03, 19th August, 2020

Андерс дает хорошее резюме, и вот пример аннотации JUnit

@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
    readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}

Здесь аннотация @Test говорит JUnit, что метод flatfileMissing -это тест, который должен быть выполнен, и что ожидаемый результат-это брошенный IOException . Таким образом, при выполнении тестов этот метод будет вызван, и тест пройдет или не пройдет в зависимости от того, будет ли брошен IOException .


  Сведения об ответе

SKY

22:16, 21st August, 2020

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

Вот такое введение.


  Сведения об ответе

ASSembler

12:42, 16th August, 2020

Чтобы увидеть некоторые интересные вещи, которые вы можете сделать с аннотациями, проверьте мои JavaBean аннотации и процессор аннотаций .

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


  Сведения об ответе

SKY

03:05, 2nd August, 2020

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

Чтобы прочитать подробно, есть хороший учебник по Java аннотации


  Сведения об ответе

lesha

09:51, 26th August, 2020

Когда вы используете аннотацию Java's @Override и почему? Ссылка ссылается на вопрос о том, когда следует использовать аннотацию override (@override).. Это может помочь понять концепцию аннотации better.Check out.


  Сведения об ответе

lourence

06:17, 26th August, 2020

Аннотации, когда речь заходит о EJB, известны как выбор неявного подхода среднего уровня вместо явного подхода среднего уровня , когда вы используете аннотацию, вы настраиваете то, что вам точно нужно от API например вам нужно вызвать метод транзакции для банковского перевода : без использования аннотации : код будет следующим

transfer(Account account1, Account account2, long amount)    
{
   // 1: Call middleware API to perform a security check
   // 2: Call middleware API to start a transaction
   // 3: Call middleware API to load rows from the database
   // 4: Subtract the balance from one account, add to the other
   // 5: Call middleware API to store rows in the database
   // 6: Call middleware API to end the transaction
}

при использовании аннотации ваш код не содержит громоздких API вызовов для использования середины- услуги сантехника. Код чистый и ориентирован на бизнес-логику

transfer(Account account1, Account account2, long amount) 
{
   // 1: Subtract the balance from one account, add to the other
}


  Сведения об ответе

PAGE

06:28, 14th August, 2020

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

Аннотации имеют ряд применений, среди которых:

  • Информация для компилятора -аннотации могут использоваться компилятором для обнаружения ошибок или подавления предупреждений.
  • Время компиляции и deployment-время обработки -программные средства могут обрабатывать информацию аннотаций для создания кода, XML файлов и т. д.
  • Обработка во время выполнения — некоторые аннотации доступны для изучения во время выполнения.

Область видимости определяется константами java.lang.annotation.RetentionPolicy SOURCE, CLASS и RUNTIME

  • RetentionPolicy.SOURCE: аннотация будет доступна в исходном коде программы и может быть использована компилятором или apt для генерации кода.
  • RetentionPolicy.CLASS: аннотация будет находиться в файле .class, но она не будет доступна во время выполнения. Используемые инструментами манипулирования байтовым кодом, такими как ASM , выполняют модификации
  • RetentionPolicy.RUNTIME: аннотация будет доступна в файле .class и во время выполнения, для проверки через java отражение через getAnnotations().


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться