Принцип аннотации Java
Java: используйте аннотацию, //www.vevb.com/article/101747.htm
Что такое аннотация
Аннотации также называются метаданными, такие как наш общий @Override и @Deprecated. Аннотация - это функция, представленная в версии JDK1.5. Они используются для объяснения кода и могут аннотировать пакеты, классы, интерфейсы, поля, параметры метода, локальные переменные и т. Д. Его основные функции заключаются в следующем:
Общие аннотации можно разделить на три категории:
Одна категория - это стандартные аннотации, которые поставляются с Java, в том числе @Override, @Deprecated и @SuppressWarnings, которые используются, чтобы указать, что определенный метод перезаписывается, определенный класс или метод устанавливается и предупреждение, которое следует игнорировать. После того, как эти аннотации отмечены, компилятор проверит это.
Один тип - мета -аннотация. Мета -аннотация - это аннотация, используемая для определения аннотаций, включая @retention, @Target, @Inhorted, @Documented. @Retention используется для указания стадии, на которой сохраняется аннотация, @Target используется для обозначения объема используемой аннотации, @Inhyted используется для обозначения того, что аннотация может быть унаследована, и @Documentied используется, чтобы указать, следует ли генерировать документ Javadoc.
Один тип - это пользовательские аннотации. Вы можете определить аннотации в соответствии с вашими собственными потребностями и использовать мета -аннотации для аннотирования пользовательских аннотаций.
Принцип аннотации:
Давайте посмотрим, как поддерживать аннотации в рамках системы Java. Давайте вернемся к приведенному примеру пользовательской аннотации. Для теста на аннотацию, следующим образом. Если вы аннотируете класс AnnotationTest, значение объявления аннотации может быть получено посредством AnnotationTest.class.getAnnotation (test.class) во время выполнения. Из приведенного выше предложения можно увидеть, что он получает тестовую аннотацию из структуры класса, поэтому должно быть то, что аннотация была добавлена в структуру класса в какое -то время.
@Test ("test") public class annotationtest {public void test () {}}От Java Source Code до класса Bytecode выполняется компилятором. Компилятор проанализирует исходный код Java и генерирует файл класса. Аннотации также обрабатываются компилятором во время компиляции. Компилятор будет обрабатывать символы аннотации и прикрепить их к структуре класса. Согласно спецификации JVM, структура файла класса является строго упорядоченным форматом. Единственный способ прикрепить информацию к структуре класса - это сохранить ее в атрибуты атрибутов структуры класса. Мы знаем, что для классов, полей и методов в структуре класса есть свои собственные конкретные структуры таблицы, и каждый имеет свои собственные атрибуты. Для аннотаций объем их функций также может быть разными. Они могут использоваться на классах или на полях или методах. В настоящее время компилятор будет хранить информацию о аннотации по атрибутам класса, поля и методов соответственно.
После того, как наш класс AnnotationTest будет составлен, в соответствующий файл AnnotationTest.class будет включена свойство RuntimeVisibleanNotationsationsations. Поскольку эта аннотация применяется к классу, это свойство добавляется в набор атрибутов класса. То есть будет записано значение пары ключа = тест тестовой аннотации. Когда JVM загружает байт -код файла AnnotationTest.class, значение свойства RuntimeVisibleanNotations будет сохранено в класс объект AnnotationTest, поэтому объект тестового аннотации может быть получен с помощью AnnotationTest.class.getannotation (test.class), а затем значение свойства в тестируемом испытании проводится через тест.
Здесь могут быть вопросы, какой объект тестовой аннотации? Фактически, суть аннотации после составления - это интерфейс, который наследует интерфейс аннотации, поэтому @Test на самом деле является «Аннотацией общего интерфейса расширяет». Когда мы вызовываем через annotationtest.class.getannotation (test.class), JDK генерирует объект, который реализует интерфейс тестирования через динамический прокси, и установит значение свойства RuntimeVisibleanNotations в этот объект. Этот объект представляет собой тестовый объект аннотации. Значение аннотации может быть получено с помощью метода значения ().
Весь процесс механизма реализации аннотации Java показан выше. Его реализация требует сотрудничества компилятора и JVM.
Спасибо за чтение, я надеюсь, что это поможет вам. Спасибо за поддержку этого сайта!