neverend的日志

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

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

          最近打算搞清楚以下問(wèn)題:

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

          1. 注解的原理與使用
              閱讀了《Java編程思想》講注解的一章,整理筆記如下:
              1.1 定義注解
              使用元注解定義注解,元注解有四種:
              @Target(ElementType.[type])
              [type]={METHOD, FIELD, TYPE(類(lèi)、接口、枚舉聲明), CONSTRUCTOR, LOCAL_VARIABLE, PARAMETER}
              @Retention(RetentionPolicy.[policy])
              [policy]={SOURCE, CLASS, RUNTIME(反射機(jī)制可讀取)}
              @Documented 表示將此注解包含到Javadoc中
              @Inherited 表示允許子類(lèi)繼承父類(lèi)的注解
              例子:
          //: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í)指定
                  非基本類(lèi)型的注解元素的值不可為null
                  注解快捷方式: 如果注解元素聲明為value(),則在使用注解時(shí)如果只聲明value,可以只寫(xiě)值,不必寫(xiě)名值對(duì)。例如可寫(xiě)為@UseCase(10)
              1.3編寫(xiě)注解處理器
                  通過(guò)反射機(jī)制獲取注解元素的值: Method.getAnnotation(), Field.getDeclaredAnnotations()等方法
              1.4注解的使用場(chǎng)景
                  統(tǒng)計(jì)系統(tǒng)用例實(shí)現(xiàn)情況   
                  由JavaBean自動(dòng)生成數(shù)據(jù)庫(kù)建表SQL
              1.5 JDK提供的注解工具apt
              1.6 基于注解的單元測(cè)試    
          待續(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的代碼非常簡(jiǎn)單,可用于注解類(lèi)的方法,并在Source級(jí)別可用。  
              @Deprecated
              級(jí)別為Runtime    
            
              @SuppressWarnings
              級(jí)別為source,經(jīng)常的使用方式為@SuppressWarnings("unchecked")
          3. Spring與Junit的常用注解分析。
              @Test
             
          4. 如何合理的設(shè)計(jì)和使用注解
              使用注解標(biāo)記字段和方法,可通過(guò)反射的手段截取注解及其標(biāo)記的字段和方法的元數(shù)據(jù),并根據(jù)需求對(duì)元數(shù)據(jù)進(jìn)行處理。
              它賦予了字段和方法額外的意義,提供了一種統(tǒng)一處理字段和方法的優(yōu)雅的方式。
              注解更多的意義是提供了一種設(shè)計(jì)模式,在本質(zhì)上它沒(méi)有增強(qiáng)Java的能力,使用注解實(shí)現(xiàn)的功能都可以以非注解的方式實(shí)現(xiàn),只是代碼可能不是很好看而已
          posted on 2012-01-30 11:16 neverend 閱讀(20067) 評(píng)論(2)  編輯  收藏 所屬分類(lèi): 編程語(yǔ)言

          Feedback

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

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


          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 陵川县| 克山县| 聂拉木县| 锦州市| 东乡族自治县| 岐山县| 卢龙县| 太原市| 乌鲁木齐县| 陕西省| 沙坪坝区| 宽甸| 铁岭县| 禄劝| 南溪县| 淅川县| 崇阳县| 岑溪市| 通江县| 沙湾县| 高碑店市| 常德市| 仪征市| 碌曲县| 凤阳县| 云南省| 乐东| 洪湖市| 怀集县| 正蓝旗| 封丘县| 温泉县| 常熟市| 南宁市| 西畴县| 大厂| 化隆| 肃南| 八宿县| 盐亭县| 阳春市|