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

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

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

    neverend的日志

    不記錄,終將被遺忘。 一萬年太久,只爭朝夕。 他們用數(shù)字構(gòu)建了整個(gè)世界。

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      62 Posts :: 1 Stories :: 17 Comments :: 0 Trackbacks
    關(guān)于JAVA注解,已經(jīng)不止一次的碰到了,但是沒有系統(tǒng)的研究過。

    最近打算搞清楚以下問題:

    1. 注解的原理與使用
    2. Java提供的標(biāo)準(zhǔn)注解分析。
    3. Spring與Junit的常用注解分析。
    4. 如何合理的設(shè)計(jì)和使用注解

    1. 注解的原理與使用
        閱讀了《Java編程思想》講注解的一章,整理筆記如下:
        1.1 定義注解
        使用元注解定義注解,元注解有四種:
        @Target(ElementType.[type])
        [type]={METHOD, FIELD, TYPE(類、接口、枚舉聲明), CONSTRUCTOR, LOCAL_VARIABLE, PARAMETER}
        @Retention(RetentionPolicy.[policy])
        [policy]={SOURCE, CLASS, RUNTIME(反射機(jī)制可讀取)}
        @Documented 表示將此注解包含到Javadoc中
        @Inherited 表示允許子類繼承父類的注解
        例子:
    //:annotations/UserCase.java

    import java.lang.annotation.*;

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.RUNTIME)
    public @interface UseCases {
        public int value() default 0;
        
    public int id() default 0;
        
    public String description() default "no description";
    }
       
        1.2使用注解
            @UserCase(id=10, description="my desccription")
            注意:
            注解元素必須有確定的值,要么在定義注解的默認(rèn)值中指定,要么在使用注解時(shí)指定
            非基本類型的注解元素的值不可為null
            注解快捷方式: 如果注解元素聲明為value(),則在使用注解時(shí)如果只聲明value,可以只寫值,不必寫名值對。例如可寫為@UseCase(10)
        1.3編寫注解處理器
            通過反射機(jī)制獲取注解元素的值: Method.getAnnotation(), Field.getDeclaredAnnotations()等方法
        1.4注解的使用場景
            統(tǒng)計(jì)系統(tǒng)用例實(shí)現(xiàn)情況   
            由JavaBean自動(dòng)生成數(shù)據(jù)庫建表SQL
        1.5 JDK提供的注解工具apt
        1.6 基于注解的單元測試    
    待續(xù)……
    2. Java提供的標(biāo)準(zhǔn)注解分析。
        @Override
    /*
     * @(#)Override.java    1.5 04/02/09
     *
     * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
     * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
     
    */


    package java.lang;

    import java.lang.annotation.*;

    /**
     * Indicates that a method declaration is intended to override a
     * method declaration in a superclass.  If a method is annotated with
     * this annotation type but does not override a superclass method,
     * compilers are required to generate an error message.
     *
     * 
    @author  Joshua Bloch
     * 
    @since 1.5
     
    */

    @Target(ElementType.METHOD)
    @Retention(RetentionPolicy.SOURCE)
    public @interface Override {
    }

        注解@Override的代碼非常簡單,可用于注解類的方法,并在Source級別可用。  
        @Deprecated
        級別為Runtime    
      
        @SuppressWarnings
        級別為source,經(jīng)常的使用方式為@SuppressWarnings("unchecked")
    3. Spring與Junit的常用注解分析。
        @Test
       
    4. 如何合理的設(shè)計(jì)和使用注解
        使用注解標(biāo)記字段和方法,可通過反射的手段截取注解及其標(biāo)記的字段和方法的元數(shù)據(jù),并根據(jù)需求對元數(shù)據(jù)進(jìn)行處理。
        它賦予了字段和方法額外的意義,提供了一種統(tǒng)一處理字段和方法的優(yōu)雅的方式。
        注解更多的意義是提供了一種設(shè)計(jì)模式,在本質(zhì)上它沒有增強(qiáng)Java的能力,使用注解實(shí)現(xiàn)的功能都可以以非注解的方式實(shí)現(xiàn),只是代碼可能不是很好看而已
    posted on 2012-01-30 11:16 neverend 閱讀(20058) 評論(2)  編輯  收藏 所屬分類: 編程語言

    Feedback

    # re: JAVA注解總結(jié) 2013-07-09 15:05 suifengshi
    問一下啊,公司的業(yè)務(wù)轉(zhuǎn)發(fā)層自己寫的,是跟這個(gè)注解有關(guān)系的嗎  回復(fù)  更多評論
      

    # re: JAVA注解總結(jié) 2014-08-01 15:38 lijing
    bucuo  回復(fù)  更多評論
      


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 99在线观看视频免费| 一本无码人妻在中文字幕免费| 毛色毛片免费观看| 久久精品国产亚洲AV高清热| 两性色午夜视频免费播放| 久久久亚洲精品蜜桃臀| 免费高清A级毛片在线播放| 国产成人精品免费直播| 国产AV无码专区亚洲AV蜜芽 | 日韩欧美亚洲国产精品字幕久久久| 中文字幕无码成人免费视频| 亚洲日本久久久午夜精品| 欧美最猛性xxxxx免费| 亚洲男人天堂2018av| 国产高清免费在线| 一区二区免费在线观看| 国产亚洲av片在线观看播放| 无码国产精品一区二区免费式芒果| 亚洲国产成人私人影院| 69成人免费视频| 亚洲成在人线在线播放无码| 亚洲成人国产精品| 久久美女网站免费| 亚洲国产精品综合久久网各| 国产精品免费小视频| 国产精品成人69XXX免费视频| 亚洲AV永久无码精品成人| 精品成在人线AV无码免费看| 亚洲av无码专区在线电影| 久久精品国产亚洲7777| 最近2019免费中文字幕视频三| 亚洲中文字幕AV每天更新| 亚洲精品无码99在线观看| 99精品一区二区免费视频| 亚洲AV无码一区二区三区电影 | 色噜噜亚洲男人的天堂| 免费一级毛片女人图片| 亚洲欧美日韩综合久久久久| 无码人妻精品中文字幕免费| 亚洲国产成人超福利久久精品| 国产一级淫片免费播放|