自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入注解:在Java中設(shè)計(jì)和使用自己的注解

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

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

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

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

形式如下 @interface 來進(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、 利用反射來操作注解,詳細(xì)見代碼。

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

<A extends Annotation>
A
   getAnnotation(Class<A> annotationClass)

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

boolean isAnnotationPresent(Class<? extends Annotation> 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對象詳解
  3. Java API設(shè)計(jì)清單
  4. Java遠(yuǎn)程方法調(diào)用RMI
  5. Java編程:常見問題匯總
責(zé)任編輯:林師授 來源: yue7603835的博客
相關(guān)推薦

2021-12-30 12:30:01

Java注解編譯器

2024-03-07 08:22:51

Java機(jī)制元數(shù)據(jù)

2022-11-11 08:31:39

Java注解注解類

2022-12-14 09:10:06

JAVA注解繼承

2017-11-17 09:13:31

Java注解

2021-03-26 09:37:12

Java開發(fā)代碼

2020-03-06 10:25:10

注解Java代碼

2025-03-27 09:38:35

2016-12-02 17:32:45

LinuxGlyphr

2023-03-30 16:16:00

Java自定義注解開發(fā)

2023-06-30 08:26:24

Java注解Java程序元素

2021-03-08 00:11:02

Spring注解開發(fā)

2020-09-04 13:30:43

Java自定義代碼

2020-12-02 11:56:16

Java注解Excel

2009-06-15 17:48:32

Spring注解注入屬性

2021-04-21 08:56:46

Java注解反射

2017-12-22 09:59:43

2023-08-26 11:36:31

Java框架Spring

2020-12-10 08:21:27

XML映射Mybatis

2024-01-18 09:38:00

Java注解JDK5
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)