<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

    JAVA從J2SE5開始提供名為annotation(注釋,標(biāo)注)的功能。Java的annotation,可以附加在package, class, method, field等上面,相當(dāng)于給它們添加了額外的輔助信息。附加在package, class, method, field等上的Annotation,如果沒有外部解析工具等對其加以解析和處理的情況,本身不會對Java的源代碼或class等產(chǎn)生任何影響,也不會對它們的執(zhí)行產(chǎn)生任何影響。

    但借助外部工具,比如javac,EJB容器等,可以對附加在package, class, method, field的annotation進(jìn)行解析,可以根據(jù)annotation而做出相應(yīng)的處理,比如運(yùn)行時改變對象/方法的行為。


    Java標(biāo)準(zhǔn)Annotation
    @Deprecated 相當(dāng)于Javadoc的@deprecated,被@Deprecated標(biāo)注的對象class, method等被注明為不推薦使用。主要用于javac等編譯工具。
    @Override 注明對象method重載了父類的方法。javac等編譯工具編譯時會根據(jù)此Annotation判斷重載方法是否正確。
    @SuppressWarnings 告訴javac等編譯器忽略所指定的特定的警告信息。
    @Target 被定義的annotation可以附加在那些對象上。
    @Retention annotation的作用期間。
    Java標(biāo)準(zhǔn)Annotation的使用
    @Deprecated:
    @Deprecated
    public class TestBean {
        …
    }
    @SuppressWarnings
    @SuppressWarnings("serial")
    public class TestBean implements java.io.Serializable {
        …
    }

    @SuppressWarnings(value = {"serial", "unchecked"})
    public String doSth() {
        …
    }

    @Override
    @Override
    public String doSth() {
        …
    }


    Annotation的定義
    定義方法:
    @interface Annotation名 {定義體}

    定義例1:
    public @interface MyAnnotation {}
    該例定義了一個無任何屬性/方法的Annotation。

    定義例2:
    public @interface MyAnnotation {
        public String value();
    }
    該例定義了只有一個方法為value()的Annotation。一般來說,只有一個方法的Annotation,方法名一定定義為value。

    定義例3:
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface MyAnnotation {
        public String value();
        public String [] multiValues();
        int number() default 0;
        
    }
    該例定義了一個具有多方法的Annotation。并設(shè)置其中一個方法number的默認(rèn)值為0。multiValues 方法定義為數(shù)組類型。Annotation定義可以用MetaAnnotation(元注釋)修飾。MetaAnnotation有以下2個:
    @Retention
    @Target

    我們將在以下對@Retention與@Target加以說明。


    @Retention
    @Retention 可以設(shè)置為RetentionPolicy類型的值。
    例:
    @Retention(RetentionPolicy.RUNTIME)

    RetentionPolicy的值 說明
    RetentionPolicy.CLASS annotation信息將被編譯器編譯時保存在class文件中,但執(zhí)行時不會在VM裝載。也就是說不能在執(zhí)行時動態(tài)取得annotation信息。未設(shè)置@Retention時這將是默認(rèn)設(shè)置值。
    RetentionPolicy.RUNTIME annotation信息將被編譯器編譯時保存在class文件中,執(zhí)行時也會被VM裝載。
    RetentionPolicy.SOURCE annotation信息將被編譯器編譯時舍棄掉。


    @Target
    @Target表明Annotation可以附加在哪種JAVA元素之上,可以設(shè)置為java.lang.annotation.ElementType數(shù)組類型的值。
    使用例1:
    @Target(ElementType.METHOD)

    使用例2:
    @Target(value={ElementType.CONSTRUCTOR, ElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.METHOD})

    ElementType是一個枚舉類型,它具有以下定義:
    ElementType值 說明
    ElementType.ANNOTATION_TYPE 應(yīng)用于其他注解的元注解
    ElementType.CONSTRUCTOR 構(gòu)造函數(shù)
    ElementType.FIELD 字段
    ElementType.LOCAL_VARIABLE 方法中的本地變量
    ElementType.METHOD 方法
    ElementType.PACKAGE
    ElementType.PARAMETER 方法的參數(shù)
    ElementType.TYPE 類,接口或者枚舉聲明





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

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

    常用鏈接

    留言簿(2)

    隨筆檔案(1)

    文章分類(21)

    文章檔案(17)

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 13660
    • 排名 - 2090

    最新評論

    主站蜘蛛池模板: 一级特黄录像免费播放中文版| 亚洲高清毛片一区二区| 91精品全国免费观看青青| 免费在线观看视频a| 天堂亚洲免费视频| 亚洲精品成人片在线观看| 国产精品无码免费专区午夜| 亚洲精品无码激情AV| 亚洲免费视频一区二区三区| 国产亚洲美女精品久久久久狼| 久久er国产精品免费观看8| 国产成人精品日本亚洲专区61 | 亚洲va久久久噜噜噜久久狠狠 | 久草视频在线免费| 亚洲色欲色欲www| 国产免费观看a大片的网站| 麻豆安全免费网址入口| 亚洲中文字幕无码一区| 久久久精品免费视频| 亚洲人成网站影音先锋播放| 久久福利资源网站免费看| 亚洲成熟丰满熟妇高潮XXXXX| 又粗又硬免费毛片| 中文字幕无码免费久久| 狠狠色香婷婷久久亚洲精品| 日产乱码一卡二卡三免费| 青青操免费在线观看| 精品亚洲成A人无码成A在线观看| 国产成人免费ā片在线观看| 成人免费av一区二区三区| 亚洲国产精品午夜电影| 免费jjzz在在线播放国产| 无码专区AAAAAA免费视频| 亚洲人成网站色在线观看| 亚洲日本中文字幕天堂网| 18级成人毛片免费观看| 国产亚洲精品成人久久网站| 久久被窝电影亚洲爽爽爽 | 免费在线人人电影网| 亚洲欧洲日产国码久在线观看| 99在线视频免费观看视频 |