jialisoftw

          java自定義注解接口

          java注解是附加在代碼中的一些元信息,用于一些工具在編譯、運(yùn)行時(shí)進(jìn)行解析和使用,起到說(shuō)明、配置的功能。
          注解不會(huì)也不能影響代碼的實(shí)際邏輯,僅僅起到輔助性的作用。包含在 java.lang.annotation 包中。 
          1、元注解 
          元注解是指注解的注解。包括  @Retention @Target @Document @Inherited四種。 
          1.1、@Retention: 定義注解的保留策略 
          Java代碼
          1. @Retention(RetentionPolicy.SOURCE) //注解僅存在于源碼中,在class字節(jié)碼文件中不包含  
          2. @Retention(RetentionPolicy.CLASS)  //默認(rèn)的保留策略,注解會(huì)在class字節(jié)碼文件中存在,但運(yùn)行時(shí)無(wú)法獲得,  
          3. @Retention(RetentionPolicy.RUNTIME)//注解會(huì)在class字節(jié)碼文件中存在,在運(yùn)行時(shí)可以通過(guò)反射獲取到  
          1.2、@Target:定義注解的作用目標(biāo) 
          Java代碼
          1. @Target(ElementType.TYPE)   //接口、類、枚舉、注解  
          2. @Target(ElementType.FIELD) //字段、枚舉的常量  
          3. @Target(ElementType.METHOD) //方法  
          4. @Target(ElementType.PARAMETER) //方法參數(shù)  
          5. @Target(ElementType.CONSTRUCTOR)  //構(gòu)造函數(shù)  
          6. @Target(ElementType.LOCAL_VARIABLE)//局部變量  
          7. @Target(ElementType.ANNOTATION_TYPE)//注解  
          8. @Target(ElementType.PACKAGE) ///包  
          elementType 可以有多個(gè),一個(gè)注解可以為類的,方法的,字段的等等 
          1.3、@Document:說(shuō)明該注解將被包含在javadoc中 
          1.4、@Inherited:說(shuō)明子類可以繼承父類中的該注解 
          下面是自定義注解的一個(gè)例子 
          2、注解的自定義 
          Java代碼
          1. @Retention(RetentionPolicy.RUNTIME)  
          2. @Target(ElementType.METHOD)  
          3. public @interface HelloWorld {  
          4.     public String name() default "";  
          5. }  
          3、注解的使用,測(cè)試類 
          Java代碼
          1. public class SayHello {  
          2.       
          3.     @HelloWorld(name = " 小明 ")  
          4.     public void sayHello(String name) {  
          5.         System.out.println(name + "say hello world!");  
          6.     }//www.heatpress123.net 
          7. }  
          4、解析注解 
             java的反射機(jī)制可以幫助,得到注解,代碼如下: 
          Java代碼 
          1. public class AnnTest {  
          2. public void parseMethod(Class<?> clazz) {  
          3.         Object obj;  
          4.        try {  
          5.             // 通過(guò)默認(rèn)構(gòu)造方法創(chuàng)建一個(gè)新的對(duì)象  
          6.             obj = clazz.getConstructor(new Class[] {}).newInstance(  
          7.                     new Object[] {});  
          8.             for (Method method : clazz.getDeclaredMethods()) {  
          9.                 HelloWorld say = method.getAnnotation(HelloWorld.class);  
          10.                 String name = "";  
          11.                 if (say != null) {  
          12.                     name = say.name();  
          13.                     System.out.println(name);  
          14.                     method.invoke(obj, name);  
          15.                 }  
          16.             }  
          17.         } catch (Exception e) {  
          18.             e.printStackTrace();  
          19.         }  
          20.     }  
          21.     public static void main(String[] args) {  
          22.         AnnTest t = new AnnTest();  
          23.         t.parseMethod(SayHello.class);  
          24.     }  
          25. }  
          26.  原文:http://www.software8.co/wzjs/java/1420.html

          posted on 2012-11-23 15:48 飛豬一號(hào) 閱讀(1172) 評(píng)論(1)  編輯  收藏

          評(píng)論

          # re: java自定義注解接口[未登錄](méi) 2012-11-23 20:52 大頭

          學(xué)習(xí)了。
            回復(fù)  更多評(píng)論   


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


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆檔案

          友情鏈接

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 秦皇岛市| 辽阳市| 卢氏县| 桃园县| 乌兰浩特市| 利津县| 南宫市| 兰溪市| 双牌县| 米脂县| 嘉义县| 陕西省| 赤水市| 长顺县| 工布江达县| 开原市| 扎兰屯市| 临海市| 北票市| 都安| 建水县| 咸宁市| 永德县| 遵义县| 南康市| 汾阳市| 芦山县| 乌审旗| 儋州市| 台东县| 成武县| 大城县| 雷波县| 朝阳区| 青川县| 武宣县| 彩票| 石家庄市| 朝阳市| 瓦房店市| 普陀区|