隨筆 - 0, 文章 - 75, 評(píng)論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          java注解(上)

          JDK1.5新特性:注解


          相當(dāng)于一種標(biāo)記,加上注解就等同加上了某種標(biāo)記,以后javac編譯器、開發(fā)工具和其他程序可以用反射來(lái)了解這個(gè)類及各種元素上有無(wú)何種標(biāo)記。有什么標(biāo)記、就去干相應(yīng)的事


          標(biāo)記可以加在:包、類、字段、方法、方法的參數(shù)以及局部變量上



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


          @Override
          表示當(dāng)前方法是覆蓋父類的方法。


          @Deprecated
          表示當(dāng)前元素是不贊成使用的(過(guò)時(shí)的)


          @SuppressWarnings
          表示關(guān)閉一些不當(dāng)?shù)木幾g器警告信息



          注解也相當(dāng)于一個(gè)特殊的類



          注解的應(yīng)用結(jié)構(gòu)圖:



          注解類
          應(yīng)用了“注解類”的類   對(duì)“應(yīng)用了注解的類”進(jìn)行反射操作的類


          @interface A{
          @A
          class C{


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


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



          }



          元注解:為注解提供服務(wù)的注解稱為~


          @Retention(RetentionPolicy.RUNTIME)


          它的作用:使注解一直保留到一個(gè)時(shí)期,決定注解的生命周期,默認(rèn)是CLASS


          RetentionPolicy是一個(gè)枚舉,其中有三種取值:




          取值
          分別對(duì)應(yīng)



          RetentionPolicy.SOURCE --> java源文件


          RetentionPolicy.CLASS --> class文件


          RetentionPolicy.RUNTIME --> 內(nèi)存中的字節(jié)碼



          當(dāng)編譯器編譯java源文件時(shí),可能會(huì)把“沒用的”注解從中去掉,編譯成class


          當(dāng)使用該類時(shí),類加載器把class文件加載到內(nèi)存中時(shí),也會(huì)把“沒用的”注解從中去掉,生成內(nèi)存中的字節(jié)碼



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


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


          }


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


          java自帶的3個(gè)注解:


          @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);
          //過(guò)時(shí)方法
          sayHello();//過(guò)時(shí)方法
          if(AnnotationTest.class.isAnnotationPresent(MyAnnotation.class)){
          //哪個(gè)注解在不在
          MyAnnotation annotation =
          AnnotationTest.class.getAnnotation(MyAnnotation.class);
          System.out.println(annotation);
          }


          }

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


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


          JDK1.5中,Interface Type接口


          Class也實(shí)現(xiàn)了該接口,Type更準(zhǔn)確,包含:Class interface enum


           



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


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 乐都县| 响水县| 芒康县| 桓仁| 金昌市| 泗水县| 玉田县| 博罗县| 塔城市| 曲阜市| 隆林| 崇明县| 厦门市| 莲花县| 永泰县| 长葛市| 郧西县| 河池市| 合肥市| 黑龙江省| 林甸县| 高雄县| 扶绥县| 扬州市| 社会| 合作市| 三台县| 嫩江县| 石渠县| 明水县| 昆明市| 西乌珠穆沁旗| 宿松县| 兴义市| 娄烦县| 嘉善县| 什邡市| 灵武市| 扬中市| 天长市| 赣州市|