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 閱讀(3834) 評論(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)

          有趣網絡

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 沭阳县| 迭部县| 榆树市| 东海县| 修武县| 汤阴县| 壤塘县| 和平县| 兴安县| 青州市| 彭泽县| 莱芜市| 桃园市| 红河县| 古蔺县| 太和县| 达孜县| 通州市| 茶陵县| 宁陕县| 赤城县| 沂水县| 达孜县| 台南市| 温州市| 蒙阴县| 衡阳县| 仁怀市| 刚察县| 比如县| 乐都县| 成安县| 正定县| 疏附县| 沙雅县| 湘阴县| 丽水市| 成安县| 韶关市| 盘锦市| 渭源县|