日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
深入注解:在Java中設(shè)計(jì)和使用自己的注解

我們用過(guò)JDK給我們提供的 @Override @Deprecated @SuppressWarning 注解 ,這些注解是JDK給我們提供的,我們只是在用別人寫好的東西,那么我們是否可以自己寫注解呢?當(dāng)然是可以的。

創(chuàng)新互聯(lián)云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)13年的服務(wù)器租用、BGP機(jī)房服務(wù)器托管、云服務(wù)器、網(wǎng)站空間、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、網(wǎng)站空間、申請(qǐng)域名、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。

我們寫的注解包括三個(gè)環(huán)節(jié):

1、 注解的聲明,也就是注解類的定義。

形式如下 @interface 來(lái)進(jìn)行注解的聲明。

 
 
 
  1. package me.test;     
  2.  
  3. import java.lang.annotation.* ;//導(dǎo)入注解包中所有注解  
  4.  
  5. @Retention(RetentionPolicy.RUNTIME)   //解釋如下  
  6.  
  7. @Target(ElementType.TYPE)//解釋如下  
  8.  
  9. public @interface MyAnnotation               
  10. {   
  11.  
  12. }  
  13.  
  14. @Retention(RetentionPolicy.RUNTIME)  

指定了注解保留的周期,注解的生命周期有是三個(gè),RetentionPolicy 枚舉的三個(gè)值代表了三個(gè)聲明周期,默認(rèn)是CLASS。

枚舉常量摘要
CLASS
          編譯器將把注釋記錄在類文件中,但在運(yùn)行時(shí) VM 不需要保留注釋。
RUNTIME
          編譯器將把注釋記錄在類文件中,在運(yùn)行時(shí) VM 將保留注釋,因此可以反射性地讀取。
SOURCE
          編譯器要丟棄的注釋。

 @Target(ElementType.TYPE)

這個(gè)標(biāo)識(shí)注解應(yīng)該標(biāo)在那里ElementType的幾個(gè)枚舉值就代表了,注解應(yīng)該寫在的位置。

CONSTRUCTOR
          構(gòu)造方法聲明
FIELD
          字段聲明(包括枚舉常量)
LOCAL_VARIABLE
          局部變量聲明
METHOD
          方法聲明
PACKAGE
          包聲明
PARAMETER
          參數(shù)聲明
TYPE
          類、接口(包括注釋類型)或枚舉聲明

 2、 使用了注解的類或者方法。

 
 
 
  1. @MyAnnotation 
  2. class  A  
  3. {  

3、 利用反射來(lái)操作注解,詳細(xì)見(jiàn)代碼。

Class類有一個(gè)方法:

Annotation>
A
   getAnnotation(Class annotationClass)

 這個(gè)方法接受一個(gè)注解的字節(jié)碼參數(shù) ,然后返回這個(gè)類所標(biāo)識(shí)的注解對(duì)象 ,因?yàn)槲覀儤?biāo)識(shí)了一個(gè)注解就相當(dāng)于產(chǎn)生了一個(gè)注解對(duì)象 。

booleanisAnnotationPresent(ClassAnnotation> annotationClass)

 這個(gè)方法判斷一個(gè)類是否被注解所標(biāo)識(shí)。

下面是代碼示例:

MyAnnotationTest.java中

 
 
 
  1. package me.test;  
  2. import java.lang.annotation.Annotation;  
  3. @MyAnnotation 
  4. public class MyAnnotationTest  
  5. {   
  6.  
  7.     public static void main(String []args)  
  8.     {  
  9.      if(MyAnnotationTest.class.isAnnotationPresent( MyAnnotation.class))  
  10.      {  
  11.        MyAnnotation an=(MyAnnotation)MyAnnotationTest.class.getAnnotation(MyAnnotation.class) ;  
  12.        System.out.println(an.toString());  
  13.      }  
  14.     }  

MyAnnotation.java中

 
 
 
  1. package me.test;  
  2. import java.lang.annotation.ElementType;  
  3. import java.lang.annotation.Retention;  
  4. import java.lang.annotation.RetentionPolicy;  
  5. import java.lang.annotation.Target;  
  6. @Retention(RetentionPolicy.RUNTIME)  
  7. @Target(ElementType.TYPE)  
  8. public @interface MyAnnotation  
  9. {   
  10.  

 原文鏈接:http://blog.csdn.net/yue7603835/article/details/7234786

【編輯推薦】

  1. Java類加載器以及類加載器的委托模型
  2. Java中Class對(duì)象詳解
  3. Java API設(shè)計(jì)清單
  4. Java遠(yuǎn)程方法調(diào)用RMI
  5. Java編程:常見(jiàn)問(wèn)題匯總

分享標(biāo)題:深入注解:在Java中設(shè)計(jì)和使用自己的注解
本文鏈接:http://m.5511xx.com/article/cososde.html