<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) 的賦值形式。當方法返回一個數(shù)組時,可以用 方法名={值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的定義與使用

    本節(jié)介紹較為復雜的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[]數(shù)組,所以可以通過multiValues={"1", "2"}為其賦值。

     

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

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

    常用鏈接

    留言簿(2)

    隨筆檔案(1)

    文章分類(21)

    文章檔案(17)

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 13659
    • 排名 - 2090

    最新評論

    主站蜘蛛池模板: 思思re热免费精品视频66| 久久99精品视免费看| 免费观看美女裸体网站| 亚洲性69影院在线观看| 18禁无遮挡无码国产免费网站| 亚洲AV无码久久精品色欲| 日本人成在线视频免费播放| 欧洲亚洲国产清在高| 18禁超污无遮挡无码免费网站| 亚洲人精品午夜射精日韩| 男女拍拍拍免费视频网站| 亚洲无码在线播放| 久久九九AV免费精品| 91亚洲自偷在线观看国产馆| 手机在线毛片免费播放| 久久久久亚洲国产AV麻豆| jlzzjlzz亚洲乱熟在线播放| 永久免费AV无码网站国产| 久久国产亚洲高清观看| 一个人免费观看www视频在线| 亚洲一线产品二线产品| 亚洲AV永久无码精品一区二区国产 | 久久精品国产亚洲av水果派| 无码少妇精品一区二区免费动态 | 亚洲伊人久久大香线蕉AV| 日本免费v片一二三区| www一区二区www免费| 亚洲∧v久久久无码精品| 又黄又爽又成人免费视频| 亚洲日韩一区二区一无码| 亚洲日韩人妻第一页| 99热精品在线免费观看| 亚洲中文无码mv| 亚洲日本va中文字幕久久| 精品女同一区二区三区免费站| 亚洲真人无码永久在线观看| 国产亚洲av人片在线观看| 日本XXX黄区免费看| 一区二区三区免费视频网站| 亚洲AV无码成人专区| 亚洲精品黄色视频在线观看免费资源|