Loading...

          java .net

          自定義Annotation

          自定義Annotation
          早就知道jdk5加了新特性Annotation,但是沒研究過,前幾天公司培訓,有一部分是介紹jdk5新特性的,一個是注解一個泛型
          今兒復習一下注解
              //用@Deprecated聲明該方法不建議使用
              @Deprecated public void doSomething1(){
                  Map map = new HashMap();
                  map.put("some", "thing");
                  System.out.println(map);
              }
             
              //用@SuppressWarnings聲明不再進行類型檢查
              @SuppressWarnings(value={"unchecked"})
              public void doSomething2(){
                  Map map = new HashMap();
                  map.put("some", "thing");
              }


          寫一個自定義注解先
          import java.lang.annotation.Retention;
          import java.lang.annotation.RetentionPolicy;
          //要在運行時使用這個注解,必須聲明成RUNTIME
          Annotation分為三種級別:RUNTIME、CLASS、SOURCE
          @Retention(RetentionPolicy.RUNTIME)
          public @interface SomeAnnotation{
              String value();
              String name();
          }

          下面來使用這個自定義注解:
          import java.lang.reflect.Method;
          public class AnnotationTest {
             
              @SomeAnnotation(value="value1",name="name1")
              public void doSomething3(){
                 
              }
             
              public static void main(String[] args){
             
                  Class<AnnotationTest> c = AnnotationTest.class;
                  try {
                      //利用反射得到方法doSomething3
                      Method method = c.getMethod("doSomething3");
                      //查找doSomething3方法是否有SomeAnnotation的Annotation
                      if(method.isAnnotationPresent(SomeAnnotation.class)){
                          System.out.println("找到SomeAnnotation");
                          //得到SomeAnnotation
                          SomeAnnotation annotation = method.getAnnotation(SomeAnnotation.class);
                          System.out.println("annotation.value="+annotation.value());
                          System.out.println("annotation.name="+annotation.name());
                      }else{
                          System.out.println("沒有找到omeAnnotation");
                      }
                  } catch (SecurityException e) {
                      e.printStackTrace();
                  } catch (NoSuchMethodException e) {
                      e.printStackTrace();
                  }
              }
          }

          輸出結果:
          找到SomeAnnotation
          annotation.value=value1
          annotation.name=name1

          posted on 2008-12-28 16:47 閱讀(3833) 評論(6)  編輯  收藏 所屬分類: 學習java

          評論

          # re: 自定義Annotation 2008-12-28 19:05 劍網3論壇

          學習咯~~~~  回復  更多評論   

          # re: 自定義Annotation 2008-12-28 21:53 ttt

          http://www.cubebi.com  回復  更多評論   

          # re: 自定義Annotation 2008-12-29 08:28 日月雨林@gmail.com

          這個是我最容易明白的一篇文章了!太感謝了!  回復  更多評論   

          # re: 自定義Annotation 2008-12-29 13:03

          (*^__^*) 嘻嘻……   回復  更多評論   

          # re: 自定義Annotation 2008-12-29 20:24 Strive

          頂一個先。。  回復  更多評論   

          # re: 自定義Annotation 2009-01-08 14:49 kangsg219

          學習了,謝謝  回復  更多評論   

          公告

          希望有一天

          我能用鼠標雙擊我的錢包

          然后選中一張100元

          按住“ctrl+c”

          接著不停的“ctrl+v”

          嘻嘻~~~笑醒~~~



          導航

          <2008年12月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(102)

          隨筆檔案(398)

          文章分類

          文章檔案(10)

          有趣網絡

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 申扎县| 苏尼特右旗| 昭通市| 浦东新区| 聂拉木县| 砀山县| 绥宁县| 佛山市| 金沙县| 宾川县| 玛纳斯县| 泾源县| 当雄县| 普格县| 治县。| 日照市| 隆昌县| 利津县| 白朗县| 桂东县| 台南市| 南昌市| 行唐县| 株洲市| 固原市| 本溪市| 井研县| 莫力| 乌兰浩特市| 项城市| 德令哈市| 临泉县| 正阳县| 张家界市| 革吉县| 博乐市| 波密县| 富宁县| 马尔康县| 泾阳县| 重庆市|