Если нет никаких методов и задач для чтения аннотаций, то аннотации не будут более полезными, чем аннотации. Важная часть процесса использования аннотаций создается с использованием процессора аннотации. Javase5 расширяет API механизма отражения, чтобы помочь программистам быстро построить настраиваемые процессоры аннотации.
Аннотированная библиотека классов процессора (java.lang.reflect.annotatedElement):
Java использует интерфейс аннотации для представления аннотации перед элементом программы, который является родительским интерфейсом всех типов аннотаций. Кроме того, Java добавила интерфейс аннотационного размера в пакете java.lang.reflect. Этот интерфейс представляет элементы программы, которые могут принимать аннотации в программе. Интерфейс в основном имеет следующие классы реализации:
Класс: определение класса
Конструктор: определение конструктора
Поле: кумулятивное определение переменной члена
Метод: определение метода класса
Пакет: Определение пакета класса
Пакет java.lang.reflect в основном содержит некоторые классы инструментов, которые реализуют функции отражения. Фактически, все API -интерфейсы отражения, предоставленные пакетом Java.Lang.Reflect расширяют возможность читать информацию о аннотации времени выполнения. Когда тип аннотации определяется как аннотация во время выполнения, аннотация может быть видна только во время выполнения, а аннотация сохраняется в файле класса при загрузке файла класса, будет прочитан виртуальной машиной.
Интерфейс AnnotatedElement является родительским интерфейсом всех элементов программы (класс, метод и конструктор). Следовательно, после того, как программа получает объект аннотационного изделия определенного класса посредством отражения, программа может вызвать следующие четыре метода объекта для доступа к информации аннотации:
Метод 1: <Textendannotation> tgetannotation (класс <t> AnnotationClass): возвращает аннотацию указанного типа, который существует в элементе программы. Если аннотация типа не существует, верните NULL.
Метод 2: аннотация [] getAnnotations (): возвращает все аннотации, которые существуют в элементе программы.
Метод 3: BooleanisannotationPresent (Class <? Extendendantation> AnnotationClass): определяет, содержит ли элемент программы аннотации указанного типа. Если он существует, он вернет True, в противном случае он вернет ложь.
Метод 4: аннотация [] getDeclaredannationations (): возвращает все комментарии, которые существуют непосредственно на этом элементе. В отличие от других методов в этом интерфейсе, этот метод игнорирует унаследованные аннотации. (Если не существует комментариев непосредственно в этом элементе, возвращается массив нуля длины.) Вызывающий абонент метода может изменить возвращенный массив по желанию; Это не повлияет на массив, возвращенный другими абонентами.
Простой процессор аннотации:
/******************* */ @Target (elementtype.field) @retention (artenentionpolicy.runtime) @documentedpublic @interface fruitcolor {/** * color enum * @author peida * */public enum color {bule, red, green};/** ** атрибут * @return */color fruitcolor (). @author peida**/ @target (elementtype.field) @retention (artententypolicy.runtime) @documentedpublic @interface fruitprovider {/*** Номер поставщика* @return*/public int id () по умолчанию -1;/** ** Имя поставщика* @return*/public spine () Defort ""/**** ";}/************************* Я используется *********************/открытый класс Apple {@fruitname (" Apple ") Private String Appllename; @FruitColor (FruitColor = color.red) Private String AppleColor; @fruitProvider (id = 1, name =" shaanxi hongfuji group, addrovider (id = name = "shaanxi hongfuji 89, Yan'an Road, Xi'an City, провинция Shaanxi ") частная строка AppleProvider; public void setAppleColor (String AppleColor) {this.AppleColor = AppleColor;} public String getAppleColor () {return appleColor;} public void setApplenam getApplename () {return Applename;} public void setAppleProvider (string appleProvider) {this.AppleProvider = AppleProvider;} public String getAppleProvider () {return AppleProvider;} public void displayName () {System.out.println ("Наименование фрукта: Apple"); Процессор *************************/Public Class FruitInfoutil {public static void getFruitInfo (class <?> clazz) {string strfuitName = "fruit name:"; string strfruitcolor = "color:"; String strfuitProvicer = "Информация о поставщике:"; : fields) {if (field.isannotationpresent (fruitname.class)) {fruitName fruitName = (fruitName) field.getannotation (fruitname.class); strfruitname = strfruitname+fruitname.value (); System.out.println (strfruitName); if (field.isannotationpresent (fruitcolor.class)) {fruitcolor fruitcolor = (fruitcolor) field.getannotation (fruitcolor.class); strfruitcolor = strfruitcolor+fruitcolor.fruitcolor (). Tostring (); System.out.ut.println (strfruitColor); if (field.isannotationpresent (fruitprovider.class)) {FruitProvider FruitProvider = (FruitProvider) Field.getAnnotation (FruitProvider.class); strfruitProvicer = «Номер поставщика:«+FruitProvider.id ()+»поставщик:«+FruitProvider.Name ()+»адресуч для поставщика; "+FruitProvider.address (); System.out.println (strfruitProvicer);}}}}/*************** {FruitInfoutil.getFruitInfo (Apple.class);}} ===================================================================================== Здание Хонгфуджи, № 89, Ян'ан -роуд, Сиан -Сити, провинция ШэньсиЯ в основном прочитал основные знания о аннотациях Java (см. Карту ниже). В следующей статье мы разрабатываем простую структуру ORM, основанную на аннотациях, которые для всестороннего применения и дальнейшего углубления понимания и применения различных точек знаний об аннотациях.
Суммировать
Выше приведено все о простых примерах процессора аннотации Java в этой статье, я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!