<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(注釋,標注)的功能。Java的annotation,可以附加在package, class, method, field等上面,相當于給它們添加了額外的輔助信息。附加在package, class, method, field等上的Annotation,如果沒有外部解析工具等對其加以解析和處理的情況,本身不會對Java的源代碼或class等產生任何影響,也不會對它們的執行產生任何影響。

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


    Java標準Annotation
    @Deprecated 相當于Javadoc的@deprecated,被@Deprecated標注的對象class, method等被注明為不推薦使用。主要用于javac等編譯工具。
    @Override 注明對象method重載了父類的方法。javac等編譯工具編譯時會根據此Annotation判斷重載方法是否正確。
    @SuppressWarnings 告訴javac等編譯器忽略所指定的特定的警告信息。
    @Target 被定義的annotation可以附加在那些對象上。
    @Retention annotation的作用期間。
    Java標準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。并設置其中一個方法number的默認值為0。multiValues 方法定義為數組類型。Annotation定義可以用MetaAnnotation(元注釋)修飾。MetaAnnotation有以下2個:
    @Retention
    @Target

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


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

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


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

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

    ElementType是一個枚舉類型,它具有以下定義:
    ElementType值 說明
    ElementType.ANNOTATION_TYPE 應用于其他注解的元注解
    ElementType.CONSTRUCTOR 構造函數
    ElementType.FIELD 字段
    ElementType.LOCAL_VARIABLE 方法中的本地變量
    ElementType.METHOD 方法
    ElementType.PACKAGE
    ElementType.PARAMETER 方法的參數
    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)

    最新隨筆

    搜索

    •  

    積分與排名

    • 積分 - 13665
    • 排名 - 2090

    最新評論

    主站蜘蛛池模板: 97视频免费在线| 在线观看亚洲免费| 久久国产精品一区免费下载| 亚洲国产成人精品91久久久| 深夜A级毛片视频免费| 国产午夜无码视频免费网站| 久久久久亚洲国产AV麻豆 | 成年在线观看网站免费| 亚洲大香人伊一本线| 国产精品色拉拉免费看| 国产精品亚洲综合五月天| 免费看韩国黄a片在线观看| 亚洲综合激情五月丁香六月| 免费高清小黄站在线观看| 无码一区二区三区亚洲人妻 | 亚洲中文字幕久久精品无码APP | 老司机午夜精品视频在线观看免费| 国产精品无码一二区免费| 色多多A级毛片免费看| 久久精品国产精品亚洲| 日本一道本不卡免费| 国产91在线|亚洲| 国产又大又粗又硬又长免费| 国产无遮挡色视频免费观看性色| 亚洲成AV人片在线播放无码| 67194国产精品免费观看| 亚洲乱码无人区卡1卡2卡3| 亚洲成A人片在线观看无码3D| 最新久久免费视频| 亚洲中字慕日产2021| 免费A级毛片在线播放不收费| 免费在线黄色电影| 国产 亚洲 中文在线 字幕| 男人的天堂亚洲一区二区三区 | 真实国产乱子伦精品免费| 久久精品国产亚洲av麻豆蜜芽 | 免费一本色道久久一区| 一级毛片成人免费看a| 亚洲欧洲日产韩国在线| gogo全球高清大胆亚洲| 99久9在线|免费|