隨筆 - 0, 文章 - 75, 評論 - 0, 引用 - 0
          數據加載中……

          java注解(上)

          JDK1.5新特性:注解


          相當于一種標記,加上注解就等同加上了某種標記,以后javac編譯器、開發工具和其他程序可以用反射來了解這個類及各種元素上有無何種標記。有什么標記、就去干相應的事


          標記可以加在:包、類、字段、方法、方法的參數以及局部變量上



          java.lang包,可看到JDK中提供的最基本的Annotation


          @Override
          表示當前方法是覆蓋父類的方法。


          @Deprecated
          表示當前元素是不贊成使用的(過時的)


          @SuppressWarnings
          表示關閉一些不當的編譯器警告信息



          注解也相當于一個特殊的類



          注解的應用結構圖:



          注解類
          應用了“注解類”的類   對“應用了注解的類”進行反射操作的類


          @interface A{
          @A
          class C{


          }
          class
          B{ ...}
          B.class.isAnnotationPresent(A.class);


          A
          a = B.class.getAnnotation(A.class);



          }



          元注解:為注解提供服務的注解稱為~


          @Retention(RetentionPolicy.RUNTIME)


          它的作用:使注解一直保留到一個時期,決定注解的生命周期,默認是CLASS


          RetentionPolicy是一個枚舉,其中有三種取值:




          取值
          分別對應



          RetentionPolicy.SOURCE --> java源文件


          RetentionPolicy.CLASS --> class文件


          RetentionPolicy.RUNTIME --> 內存中的字節碼



          當編譯器編譯java源文件時,可能會把“沒用的”注解從中去掉,編譯成class


          當使用該類時,類加載器把class文件加載到內存中時,也會把“沒用的”注解從中去掉,生成內存中的字節碼



          -------------------------------------------


          @Retention(RetentionPolicy.RUNTIME)
          //指定注解生命周期
          @Target({ElementType.METHOD,ElementType.TYPE})
          //指定注解作用的范圍
          public @interface MyAnnotation {


          }


          -------------------------------------------


          java自帶的3個注解:


          @Override --> SOURCE


          @SupperessWarning -->SOURCE


          @Deprecated --> RUNTIME




          @Target(ElementType.METHOD) 注解:


          指定注解的作用范圍,如方法前,等


          -------------------------------------------


          @MyAnnotation
          public class AnnotationTest {



          @SuppressWarnings("deprecation")
          public static void
          main(String[] args) {
          // TODO Auto-generated method
          stub
          System.runFinalizersOnExit(true);
          //過時方法
          sayHello();//過時方法
          if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)){
          //哪個注解在不在
          MyAnnotation annotation =
          AnnotationTest.class.getAnnotation(MyAnnotation.class);
          System.out.println(annotation);
          }


          }

          @Deprecated
          public
          static void sayHello(){
          System.out.println("你好");
          }


          -------------------------------------------


          JDK1.5中,Interface Type接口


          Class也實現了該接口,Type更準確,包含:Class interface enum


           



          posted on 2012-04-22 15:57 hantai 閱讀(167) 評論(0)  編輯  收藏


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


          網站導航:
           
          主站蜘蛛池模板: 淮北市| 咸阳市| 仁怀市| 邢台市| 元朗区| 招远市| 曲松县| 旌德县| 天长市| 大新县| 昔阳县| 三门县| 建阳市| 邵阳县| 襄城县| 麻阳| 根河市| 临汾市| 马鞍山市| 全椒县| 沙河市| 潮安县| 略阳县| 安龙县| 施甸县| 会昌县| 昌平区| 屯昌县| 桦甸市| 西乡县| 岢岚县| 石泉县| 讷河市| 红原县| 兴安盟| 乐清市| 汉阴县| 平谷区| 柳林县| 扎赉特旗| 靖远县|