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

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

新聞中心

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

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

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

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

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

形式如下 @interface 來進行注解的聲明。

 
 
 
  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)  

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

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

 @Target(ElementType.TYPE)

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

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

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

 
 
 
  1. @MyAnnotation 
  2. class  A  
  3. {  

3、 利用反射來操作注解,詳細見代碼。

Class類有一個方法:

Annotation>
A
   getAnnotation(Class annotationClass)

 這個方法接受一個注解的字節(jié)碼參數(shù) ,然后返回這個類所標(biāo)識的注解對象 ,因為我們標(biāo)識了一個注解就相當(dāng)于產(chǎn)生了一個注解對象 。

booleanisAnnotationPresent(ClassAnnotation> annotationClass)

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

下面是代碼示例:

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對象詳解
  3. Java API設(shè)計清單
  4. Java遠程方法調(diào)用RMI
  5. Java編程:常見問題匯總

網(wǎng)站標(biāo)題:深入注解:在Java中設(shè)計和使用自己的注解
分享路徑:http://www.5511xx.com/article/cososde.html