<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 1,  comments - 0,  trackbacks - 0
    Annotation是一種特殊的interface。所以可以在annotation里定義方法,屬性;也可以讓某個類從annotation繼承(implements)。

    下面從簡單地范例開始,讓我們一步步加深對annotation的了解。
    無任何方法/屬性Annotation范例:

    MyAnnotation0.java

    package com.test.annotation;

    public @interface MyAnnotation0 {
        
    }

    MyAnnotation0為一個無任何方法和屬性的annotation。

    使用MyAnnotation0:

    TestMyAnnotation0.java
    @MyAnnotation0
    public class TestMyAnnotation0 {
        @MyAnnotation0
        public void testMethod() {

        }
    }



     具有一個value方法Annotation范例:

    MyAnnotation1.java

    public @interface MyAnnotation1 {
        
        /**
         * value method
         * @return value
         */

        public String value();
    }

    MyAnnotation1具有一個名為value的方法。

    MyAnnotation1使用:
    TestMyAnnotation1.java

    @MyAnnotation1("hello")
    public class TestMyAnnotation1 {
        @MyAnnotation1(value="world")
        public void testMethod() {
        }
    }

    可以通過@Annotation名(方法名1=值1, 方法名2=值2, …)的形式給annotation賦值。只有一個方法的時候,可以直接省略為:@Annotation名(值1) 的賦值形式。當方法返回一個數組時,可以用 方法名={值1, 值2, …}給其賦值。

    具有一個value方法和一個屬性Annotation范例:

    如果必要,還可以在annotation里為其定義屬性。如下:
    MyAnnotation2.java

    @interface MyAnnotation2 {
        public String value();
        public String myProperty = "hello world";
    }

    其中,myProperty只能申明為public或無public修飾(無public修飾時也默認為public)為static, final屬性(即使不寫也默認為static, final)。

    使用例:
    TestMyAnnotation2

    class TestMyAnnotation2 {
        public static void main(String[] args) {
            System.out.println(MyAnnotation2.myProperty);
        }

        @MyAnnotation2("")
        public void testMethod1() {
        }
    }

    上例會打印出:

    hello world



     

    復雜型annotation的定義與使用

    本節介紹較為復雜的annotation定義與使用。
    先看代碼:
    MyAnnotation3.java

    public @interface MyAnnotation3 {
        public String value();
        public String[] multiValues();
        int number() default 0;
    }

    MyAnnotation3具有一個返回String的value方法,返回String[]的multiValues 方法;還有一個返回int 的number方法。其中number方法具有默認值0。

    使用例:
    TestMyAnnotation3.java

    class TestMyAnnotation3 {
        @MyAnnotation3(value = "call testMethod1", multiValues={"1", "2"}, number = 1)
        public void testMethod1() {

        }

        @MyAnnotation3(value = "call testMethod2", multiValues={"1", "2"})
        public void testMethod2() {

        }
    }

    number具有默認值,所以標注時可以不為其賦值。其余方法則必須通過上面介紹的方法賦值。multiValues返回一個String[]數組,所以可以通過multiValues={"1", "2"}為其賦值。

     

    posted on 2009-02-27 17:21 ID刀 閱讀(605) 評論(0)  編輯  收藏 所屬分類: JAVA_Base

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(2)

    隨筆檔案(1)

    文章分類(21)

    文章檔案(17)

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 13648
    • 排名 - 2092

    最新評論

    主站蜘蛛池模板: 亚洲美女视频网址| 亚洲精品亚洲人成在线麻豆| 亚洲人成人网毛片在线播放| 亚洲免费视频在线观看| 亚洲成AV人片一区二区| 任你躁在线精品免费| 亚洲精品成人片在线播放| 免费视频精品一区二区三区| 亚洲AV无码专区亚洲AV伊甸园| 日韩电影免费在线观看中文字幕| 亚洲av日韩av高潮潮喷无码| 91高清免费国产自产拍2021| 亚洲熟妇无码久久精品| 好男人视频在线观看免费看片| 亚洲欧美日韩中文二区| av无码东京热亚洲男人的天堂| 西西人体大胆免费视频| 国产亚洲精品看片在线观看| 免费h视频在线观看| 亚洲男人电影天堂| 韩国二级毛片免费播放| xxxx日本在线播放免费不卡| 国产亚洲综合网曝门系列| 国产四虎免费精品视频| 亚洲精品中文字幕| 精品国产香蕉伊思人在线在线亚洲一区二区 | 中文字幕免费在线看电影大全| 亚洲国产无套无码av电影| 麻豆视频免费观看| 免费精品久久久久久中文字幕| 亚洲国产成人片在线观看无码| 久久久久久曰本AV免费免费| 亚洲色欲色欱wwW在线| 亚洲日韩在线中文字幕第一页| 日韩精品免费视频| 亚洲av无码专区国产不乱码| 中文字幕亚洲天堂| 两性刺激生活片免费视频| 青青青视频免费观看| 亚洲成人午夜电影| 狠狠亚洲婷婷综合色香五月排名 |