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

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

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

    jialisoftw

    java自定義注解接口

    java注解是附加在代碼中的一些元信息,用于一些工具在編譯、運行時進行解析和使用,起到說明、配置的功能。
    注解不會也不能影響代碼的實際邏輯,僅僅起到輔助性的作用。包含在 java.lang.annotation 包中。 
    1、元注解 
    元注解是指注解的注解。包括  @Retention @Target @Document @Inherited四種。 
    1.1、@Retention: 定義注解的保留策略 
    Java代碼
    1. @Retention(RetentionPolicy.SOURCE) //注解僅存在于源碼中,在class字節碼文件中不包含  
    2. @Retention(RetentionPolicy.CLASS)  //默認的保留策略,注解會在class字節碼文件中存在,但運行時無法獲得,  
    3. @Retention(RetentionPolicy.RUNTIME)//注解會在class字節碼文件中存在,在運行時可以通過反射獲取到  
    1.2、@Target:定義注解的作用目標 
    Java代碼
    1. @Target(ElementType.TYPE)   //接口、類、枚舉、注解  
    2. @Target(ElementType.FIELD) //字段、枚舉的常量  
    3. @Target(ElementType.METHOD) //方法  
    4. @Target(ElementType.PARAMETER) //方法參數  
    5. @Target(ElementType.CONSTRUCTOR)  //構造函數  
    6. @Target(ElementType.LOCAL_VARIABLE)//局部變量  
    7. @Target(ElementType.ANNOTATION_TYPE)//注解  
    8. @Target(ElementType.PACKAGE) ///包  
    elementType 可以有多個,一個注解可以為類的,方法的,字段的等等 
    1.3、@Document:說明該注解將被包含在javadoc中 
    1.4、@Inherited:說明子類可以繼承父類中的該注解 
    下面是自定義注解的一個例子 
    2、注解的自定義 
    Java代碼
    1. @Retention(RetentionPolicy.RUNTIME)  
    2. @Target(ElementType.METHOD)  
    3. public @interface HelloWorld {  
    4.     public String name() default "";  
    5. }  
    3、注解的使用,測試類 
    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的反射機制可以幫助,得到注解,代碼如下: 
    Java代碼 
    1. public class AnnTest {  
    2. public void parseMethod(Class<?> clazz) {  
    3.         Object obj;  
    4.        try {  
    5.             // 通過默認構造方法創建一個新的對象  
    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 飛豬一號 閱讀(172) 評論(0)  編輯  收藏


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     

    導航

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

    統計

    常用鏈接

    留言簿

    隨筆檔案

    友情鏈接

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 中国精品一级毛片免费播放| 无码少妇一区二区浪潮免费| 国产免费久久久久久无码| 成全高清视频免费观看| 国产一区二区三区亚洲综合| 日本一道一区二区免费看| 特级毛片在线大全免费播放| 亚洲国产精品视频| 又大又硬又爽又粗又快的视频免费| 亚洲欧美日韩一区二区三区在线 | 成人永久福利免费观看| 成人网站免费大全日韩国产| 亚洲欧洲国产经精品香蕉网| 51精品视频免费国产专区| 国产精品亚洲一区二区无码| 亚洲视频在线免费观看| 91视频免费网址| 亚洲精品国产情侣av在线| av无码免费一区二区三区| 成人区精品一区二区不卡亚洲| 国产亚洲一区区二区在线| 久久亚洲免费视频| 国产大陆亚洲精品国产| 亚洲日韩中文字幕| 亚洲欧洲成人精品香蕉网| 中国人xxxxx69免费视频| 五月天婷婷精品免费视频| 亚洲w码欧洲s码免费| 国产成人青青热久免费精品| 51在线视频免费观看视频| 久久久久国色AV免费观看| 在线亚洲精品视频| 亚洲人配人种jizz| 日韩亚洲Av人人夜夜澡人人爽| 亚洲男人在线无码视频| 日韩免费福利视频| 毛片免费在线视频| 亚洲精品在线免费观看视频 | 91久久青青草原线免费| 一级美国片免费看| 亚洲福利一区二区|