国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java注解處理器簡單實例

Java注解處理器簡單實例

2021-03-14 12:18Leesire Java教程

這篇文章主要介紹了Java注解處理器簡單實例,具有一定借鑒價值,需要的朋友可以參考下

如果沒有用來讀取注解的方法和工作,那么注解也就不會比注釋更有用處了。使用注解的過程中,很重要的一部分就是創建于使用注解處理器JavaSE5擴展了反射機制的API,以幫助程序員快速的構造自定義注解處理器。

注解處理器類庫(java.lang.reflect.AnnotatedElement):

Java使用Annotation接口來代表程序元素前面的注解,該接口是所有Annotation類型的父接口。除此之外,Java在java.lang.reflect包下新增了AnnotatedElement接口,該接口代表程序中可以接受注解的程序元素,該接口主要有如下幾個實現類:

Class:類定義

Constructor:構造器定義

Field:累的成員變量定義

Method:類的方法定義

Package:類的包定義

java.lang.reflect包下主要包含一些實現反射功能的工具類,實際上,java.lang.reflect包所有提供的反射API擴充了讀取運行時Annotation信息的能力。當一個Annotation類型被定義為運行時的Annotation后,該注解才能是運行時可見,當class文件被裝載時被保存在class文件中的Annotation才會被虛擬機讀取。

AnnotatedElement接口是所有程序元素(Class、Method和Constructor)的父接口,所以程序通過反射獲取了某個類的AnnotatedElement對象之后,程序就可以調用該對象的如下四個個方法來訪問Annotation信息:

方法1:<TextendsAnnotation>TgetAnnotation(Class<T>annotationClass):返回改程序元素上存在的、指定類型的注解,如果該類型注解不存在,則返回null。

方法2:Annotation[]getAnnotations():返回該程序元素上存在的所有注解。

方法3:booleanisAnnotationPresent(Class<?extendsAnnotation>annotationClass):判斷該程序元素上是否包含指定類型的注解,存在則返回true,否則返回false.

方法4:Annotation[]getDeclaredAnnotations():返回直接存在于此元素上的所有注釋。與此接口中的其他方法不同,該方法將忽略繼承的注釋。(如果沒有注釋直接存在于此元素上,則返回長度為零的一個數組。)該方法的調用者可以隨意修改返回的數組;這不會對其他調用者返回的數組產生任何影響。

一個簡單的注解處理器:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/***********注解聲明***************/
/**
 * 水果名稱注解
 * @author peida
 *
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitName {
    String value() default "";
}
/**
 * 水果顏色注解
 * @author peida
 *
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitColor {
    /**
   * 顏色枚舉
   * @author peida
   *
   */
    public enum Color{
        BULE,RED,GREEN
    }
    ;
    /**
   * 顏色屬性
   * @return
   */
    Color fruitColor() default Color.GREEN;
}
/**
 * 水果供應者注解
 * @author peida
 *
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface FruitProvider {
    /**
   * 供應商編號
   * @return
   */
    public int id() default -1;
    /**
   * 供應商名稱
   * @return
   */
    public String name() default "";
    /**
   * 供應商地址
   * @return
   */
    public String address() default "";
}
/***********注解使用***************/
public class Apple {
    @FruitName("Apple")
      private String appleName;
    @FruitColor(fruitColor=Color.RED)
      private String appleColor;
    @FruitProvider(id=1,name="陜西紅富士集團",address="陜西省西安市延安路89號紅富士大廈")
      private String appleProvider;
    public void setAppleColor(String appleColor) {
        this.appleColor = appleColor;
    }
    public String getAppleColor() {
        return appleColor;
    }
    public void setAppleName(String appleName) {
        this.appleName = appleName;
    }
    public String getAppleName() {
        return appleName;
    }
    public void setAppleProvider(String appleProvider) {
        this.appleProvider = appleProvider;
    }
    public String getAppleProvider() {
        return appleProvider;
    }
    public void displayName(){
        System.out.println("水果的名字是:蘋果");
    }
}
/***********注解處理器***************/
public class FruitInfoUtil {
    public static void getFruitInfo(Class<?> clazz){
        String strFruitName=" 水果名稱:";
        String strFruitColor=" 水果顏色:";
        String strFruitProvicer="供應商信息:";
        Field[] fields = clazz.getDeclaredFields();
        for (Field field :fields){
            if(field.isAnnotationPresent(FruitName.class)){
                FruitName fruitName = (FruitName) field.getAnnotation(FruitName.class);
                strFruitName=strFruitName+fruitName.value();
                System.out.println(strFruitName);
            } else if(field.isAnnotationPresent(FruitColor.class)){
                FruitColor fruitColor= (FruitColor) field.getAnnotation(FruitColor.class);
                strFruitColor=strFruitColor+fruitColor.fruitColor().toString();
                System.out.println(strFruitColor);
            } else if(field.isAnnotationPresent(FruitProvider.class)){
                FruitProvider fruitProvider= (FruitProvider) field.getAnnotation(FruitProvider.class);
                strFruitProvicer=" 供應商編號:"+fruitProvider.id()+" 供應商名稱:"+fruitProvider.name()+" 供應商地址:"+fruitProvider.address();
                System.out.println(strFruitProvicer);
            }
        }
    }
}
/***********輸出結果***************/
public class FruitRun {
    /**
   * @param args
   */
    public static void main(String[] args) {
        FruitInfoUtil.getFruitInfo(Apple.class);
    }
}
====================================
 水果名稱:Apple
 水果顏色:RED
 供應商編號:1 供應商名稱:陜西紅富士集團 供應商地址:陜西省西安市延安路89號紅富士大廈

Java注解的基礎知識點(見下面導圖)基本都過了一遍,下一篇我們通過設計一個基于注解的簡單的ORM框架,來綜合應用和進一步加深對注解的各個知識點的理解和運用。

Java注解處理器簡單實例

總結

以上就是本文關于Java注解處理器簡單實例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/lee_sire/article/details/72138053

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美视频在线观看 | 精品国产一区二区三区日日嗨 | 国产精品久久久久久久久图文区 | 亚洲三级在线 | 久久久久久亚洲精品 | 国产精品视频一区二区三区不卡 | 日韩在线精品视频 | 精品久久久久国产 | 操操av| 我要看一级黄色 | 精品国产欧美一区二区 | 91捆绑91紧缚调教91 | 精品成人佐山爱一区二区 | 久久久久久国产一级毛片高清版 | 午夜精品 | 亚洲人成网站999久久久综合 | 久久久久国产 | 欧美日韩一区二区三区在线观看 | 美女久久| 成人精品久久久 | 操操操av | 影音先锋中文字幕在线观看 | 午夜精品一区二区三区在线观看 | 久久精品一| 黄色片网站免费观看 | 日韩精品成人 | 久久激情五月丁香伊人 | 国产婷婷色一区二区三区 | 国产视频一区二区三区在线观看 | 日韩av色| 五月激情综合网 | 国产欧美视频一区二区 | 中文字幕在线观看 | www.色综合 | 亚洲第一视频 | 精品一区二区三区四区五区 | 久久蜜桃精品一区二区三区综合网 | 欧美日韩一区二区在线观看 | 亚洲日本在线观看视频 | 狠狠色噜噜 | 一级国产 |