日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

在Java中设计和使用自己的注解(转载)

發(fā)布時間:2025/3/19 java 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Java中设计和使用自己的注解(转载) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

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

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

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

  • package?me.test;??? ?

  • ?

  • import?java.lang.annotation.*?;//導(dǎo)入注解包中所有注解 ?

  • ?

  • @Retention(RetentionPolicy.RUNTIME)???//解釋如下 ?

  • ?

  • @Target(ElementType.TYPE)//解釋如下 ?

  • ?

  • public?@interface?MyAnnotation????????????? ?

  • {? ?

  • ?

  • } ?

  • ?

  • @Retention(RetentionPolicy.RUNTIME)??

  • 指定了注解保留的周期,注解的生命周期有是三個,RetentionPolicy 枚舉的三個值代表了三個聲明周期,默認(rèn)是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、 使用了注解的類或者方法。

  • @MyAnnotation?

  • class??A ?

  • { ?

  • }?

  • 3、 利用反射來操作注解,詳細(xì)見代碼。

    Class類有一個方法:


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


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


    booleanisAnnotationPresent(Class<? extends?Annotation> annotationClass)


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

    下面是代碼示例:

    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 ?

  • {? ?

  • ?

  • }?

  • 總結(jié)

    以上是生活随笔為你收集整理的在Java中设计和使用自己的注解(转载)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。