<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{
        }

    }



                                                                                                           --    學海無涯
            

    主站蜘蛛池模板: 豆国产96在线|亚洲| 国产亚洲精品线观看动态图| 亚洲精品自产拍在线观看| 亚洲av无码专区青青草原| 成人免费视频观看无遮挡| 亚洲乱码一二三四区国产| 91精品成人免费国产片| 亚洲啪啪免费视频| 免费在线观看理论片| 曰批免费视频播放在线看片二| 国产一区二区三区在线观看免费| 亚洲AⅤ男人的天堂在线观看| 国产精品亚洲二区在线观看 | 亚洲精品网站在线观看你懂的| 久久午夜免费鲁丝片| 色婷婷亚洲十月十月色天| 少妇太爽了在线观看免费视频 | 免费一级毛片正在播放| 四虎影视成人永久免费观看视频| 亚洲午夜精品久久久久久app| 四虎成人免费影院网址| 免费大片av手机看片高清| 亚洲网站视频在线观看| 国内精品久久久久久久亚洲| 国产午夜精品理论片免费观看 | 亚洲AV一宅男色影视| 69式互添免费视频| 国产免费区在线观看十分钟| 久久亚洲精品国产精品黑人| 57pao一国产成视频永久免费| 中文字幕精品三区无码亚洲| 国产成人一区二区三区免费视频 | 国产精品成人免费观看| 亚洲永久永久永久永久永久精品| 免费日韩在线视频| 亚洲成在人线aⅴ免费毛片| 一级做a爰片久久毛片免费陪 | 最近在线2018视频免费观看| 久久精品免费网站网| 精品成人一区二区三区免费视频 | 成年男女男精品免费视频网站 |