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

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

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

    Cyh的博客

    Email:kissyan4916@163.com
    posts - 26, comments - 19, trackbacks - 0, articles - 220

    注釋功能Annotation

    Posted on 2009-12-20 00:32 啥都寫點 閱讀(211) 評論(0)  編輯  收藏 所屬分類: J2SE
       Java有兩個常用的內置的注釋:
                @Override放在方法的訪問修飾符前,表示該方法覆蓋了父類的同名同參方法,如果該方法沒有覆蓋父類的方法而使用該注釋,則編譯器會報錯。
                @Deprecated放在變量和方法的訪問修飾符前,表示該變量或者方法已經不推薦使用,通常是因為它很危險或者是存在更好的選擇。
       可以自定義注釋類型,與enum定義枚舉類型一樣,使用@interface定義注釋類型。
       能在自定義的注釋類型中定義其他類、屬性和方法。定義屬性時,以屬性名為方法名,以屬性類型為方法的返回值類型,方法后接default關鍵字表示屬性的默認值。如"String name();"表示該注釋類型具有name屬性,類型為String;而"int age()default 20;"表示該注釋類型具有age屬性,類型為int,默認值為20
       可以在自定義注釋類型的聲明中添加注釋,即注釋的元注釋。Java有2個常用的內置的元注釋。
                @Target指定Annotation類型可以應用的程序元素, 程序元素的類型由java.lang.annotation.ElementType枚舉類定義。如ElementType.METHOD表示該注釋類型只能用于方法聲明中。
                @Retention和Java編譯器處理Annotation類型的方式有關,這些方式有java.lang.annotation.RetentionPolicy枚舉類定義。如RetentionPolicy.RUNTIME表示該注釋類型將被編譯成class文件。
                @Documented指明需要在Javadoc中包含注釋類型(默認是不包含的)


    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;

    /**
     * 使用注釋Annotation.
     * Java 編程的一個最新趨勢就是使用元數據,元數據可以用于創建文檔,
     * 跟蹤代碼中的依賴性,甚至執行基本編譯時檢查。
     * 許多元數據工具(如Xdoclet)將這些功能添加到核心Java語言中,暫時成為Java編程功能的一部分。
     * Annotation是可以添加到代碼中的修飾符,
     * 可以用于包聲明、類型聲明、構造函數、方法、域變量、參數和變量
     
    */

    public class AnnotationData {
        @Deprecated 
    private String name;
        
    public AnnotationData(String name){
            
    this.name = name;
        }


        
    // 方法聲明中使用了內置的@Override元數據,表示該方法覆蓋了父類的同名同參數方法
        
    // 如果父類不存在該方法,則編譯不會通過。
        @Override public String toString() {
            
    return super.toString() + this.name;
        }

        @Override 
    public int hashCode() {
            
    return toString().hashCode();
        }

        
    /**
         * 方法中使用了內置的@Deprecated元數據,表示該方法已經不被推薦使用了。
         * 
    @return
         
    */

        @Deprecated 
    public String getName(){
            
    return name;
        }

        
    public String getAnnotationDataName(){
            
    return this.name;
        }

        
        
    // 下面自定義元數據類型
        
    // 使用@interface聲明Annotation類型
        public @interface MyAnnotation {
            
    // 在元數據類中可以定義其他類
            public enum Severity {
                CRITICAL, IMPORTANT, TRIVIAL, DOCUMENTATION
            }
    ;
            
    // 定義數據成員不需要定義getter和setter方法,
            
    // 只需要定義一個以成員名稱命名的方法,并指定返回類型為需要的數據類型
            
    // default關鍵字為Annotation類型的成員設置缺省值
            Severity severity() default Severity.IMPORTANT;
            String item();
            String assignedTo();
            String dateAssigned();
        }

        
    // 使用自定義Annotation類型,在使用時,
        
    // 如果Annotation類型在其他的包下,需要跟使用類一樣,import它
        @MyAnnotation(
                severity 
    = MyAnnotation.Severity.CRITICAL, 
                item 
    = "Must finish this method carefully"
                assignedTo 
    = "Programmer A"
                dateAssigned 
    = "2006/09/10")
        
    public void doFunction() {
            
    // do something
        }

        
    // 下面再定義一個Annotation類型,使用了元數據的元數據
        
    //  @Target指定Annotation類型可以應用的程序元素,
        
    //  程序元素的類型由java.lang.annotation.ElementType枚舉類定義
        
        
    //  @Retention和 Java 編譯器處理Annotation類型的方式有關,
        
    //  這些方式由java.lang.annotation.RetentionPolicy 枚舉類定義
        
    //  @Documented指明需要在Javadoc中包含Annotation(缺省是不包含的)
        
        
    //@Retention(RetentionPolicy.RUNTIME)這個meta-annotation
        
    // 表示了此類型的annotation將編譯成class文件,而且還能被虛擬機讀取。
        
    //而@Target(ElementType.METHOD)表示此類型的annotation只能用于修飾方法聲明
        @Retention(RetentionPolicy.RUNTIME)
        @Target(ElementType.METHOD)
        
    public @interface MyNewAnnotation{
        }

    }



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 亚洲中文字幕无码一区| 好男人www免费高清视频在线| 日本中文一区二区三区亚洲| 亚洲av无码专区在线电影天堂| 韩国日本好看电影免费看| 亚洲美国产亚洲AV| 国产aa免费视频| 无码人妻一区二区三区免费视频 | 亚洲国产精品午夜电影| 免费看黄视频网站| 亚洲区日韩精品中文字幕| 国产成人涩涩涩视频在线观看免费 | 最近2019年免费中文字幕高清 | 亚洲热线99精品视频| 久久99精品国产免费观看| 亚洲资源在线视频| 在线观看人成网站深夜免费| 精品免费AV一区二区三区| 亚洲精品国产电影| a级毛片毛片免费观看永久| 亚洲一级二级三级不卡| 国产在线国偷精品产拍免费| 国产亚洲漂亮白嫩美女在线| 国产成人A亚洲精V品无码| 精品熟女少妇av免费久久| 亚洲一本一道一区二区三区| 亚洲成A人片在线观看无码3D| 免费观看男人吊女人视频| 久久精品国产亚洲av麻豆蜜芽| 国产成人一区二区三区免费视频| 一级毛片免费一级直接观看| 亚洲国产精品不卡在线电影| 成人免费看片又大又黄| 一本一道dvd在线观看免费视频 | 亚洲欧美成人av在线观看| 亚洲国产精品毛片av不卡在线| 久久ww精品w免费人成| 国产精品久久久久久亚洲影视| 国产亚洲人成网站在线观看不卡| 久久久久久免费视频| 精品一区二区三区免费视频 |