今天就跟大家聊聊有關如何在Java中設計使用自己的注解,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
目前成都創(chuàng)新互聯(lián)公司已為上千的企業(yè)提供了網站建設、域名、雅安服務器托管、網站托管維護、企業(yè)網站設計、安州網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
我們用過JDK給我們提供的 @Override @Deprecated @SuppressWarning 注解 ,這些注解是JDK給我們提供的,我們只是在用別人寫好的東西,那么我們是否可以自己寫注解呢?當然是可以的。
我們寫的注解包括三個環(huán)節(jié):
1、 注解的聲明,也就是注解類的定義。
形式如下 @interface 來進行注解的聲明。
package me.test; import java.lang.annotation.* ;//導入注解包中所有注解 @Retention(RetentionPolicy.RUNTIME) //解釋如下 @Target(ElementType.TYPE)//解釋如下 public @interface MyAnnotation { } @Retention(RetentionPolicy.RUNTIME)
指定了注解保留的周期,注解的生命周期有是三個,RetentionPolicy 枚舉的三個值代表了三個聲明周期,默認是CLASS。
枚舉常量摘要 | |
---|---|
CLASS 編譯器將把注釋記錄在類文件中,但在運行時 VM 不需要保留注釋。 | |
RUNTIME 編譯器將把注釋記錄在類文件中,在運行時 VM 將保留注釋,因此可以反射性地讀取。 | |
SOURCE 編譯器要丟棄的注釋。 |
@Target(ElementType.TYPE)
這個標識注解應該標在那里ElementType的幾個枚舉值就代表了,注解應該寫在的位置。
CONSTRUCTOR 構造方法聲明 |
FIELD 字段聲明(包括枚舉常量) |
LOCAL_VARIABLE 局部變量聲明 |
METHOD 方法聲明 |
PACKAGE 包聲明 |
PARAMETER 參數聲明 |
TYPE 類、接口(包括注釋類型)或枚舉聲明 |
2、 使用了注解的類或者方法。
@MyAnnotation class A { }
3、 利用反射來操作注解,詳細見代碼。
Class類有一個方法:
A | getAnnotation(Class annotationClass) |
這個方法接受一個注解的字節(jié)碼參數 ,然后返回這個類所標識的注解對象 ,因為我們標識了一個注解就相當于產生了一個注解對象 。
boolean | isAnnotationPresent(Class extendsAnnotation> annotationClass) |
這個方法判斷一個類是否被注解所標識。
下面是代碼示例:
MyAnnotationTest.java中
package me.test; import java.lang.annotation.Annotation; @MyAnnotation public class MyAnnotationTest { public static void main(String []args) { if(MyAnnotationTest.class.isAnnotationPresent( MyAnnotation.class)) { MyAnnotation an=(MyAnnotation)MyAnnotationTest.class.getAnnotation(MyAnnotation.class) ; System.out.println(an.toString()); } } }
MyAnnotation.java中
package me.test; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface MyAnnotation { }
看完上述內容,你們對如何在Java中設計使用自己的注解有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。