国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java|注解之定義注解

這篇具有很好參考價(jià)值的文章主要介紹了Java|注解之定義注解。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Java語(yǔ)言使用@interface語(yǔ)法來(lái)定義注解(Annotation),它的格式如下:

public @interface Report {
    int type() default 211;
    String level() default "211";
    String value() default "211";
}

Java|注解之定義注解

?注解的參數(shù)類似無(wú)參數(shù)方法,可以用default設(shè)定一個(gè)默認(rèn)值(強(qiáng)烈推薦)。最常用的參數(shù)應(yīng)當(dāng)命名為value。

元注解

有一些注解可以修飾其他注解,這些注解就稱為元注解(meta annotation)。Java標(biāo)準(zhǔn)庫(kù)已經(jīng)定義了一些元注解,我們只需要使用元注解,通常不需要自己去編寫元注解。

@Target

最常用的元注解是@Target使用@Target可以定義Annotation能夠被應(yīng)用于源碼的哪些位置:

  • 類或接口:ElementType.TYPE;
  • 字段:ElementType.FIELD
  • 方法:ElementType.METHOD;
  • 構(gòu)造方法:ElementType.CONSTRUCTOR
  • 方法參數(shù):ElementType.PARAMETER。

例如,要使 注解@Report可用在方法上,我們必須添加一個(gè)@Target(ElementType.METHOD)

@Target(ElementType.METHOD)
public @interface Report {
    int type() default 0;
    String level() default "info";
    String value() default "";
}
//@Target(ElementType.METHOD) 表明注解Report 可以放在 類的方法前

義注解@Report可用在方法或字段上,可以把@Target注解參數(shù)變?yōu)?/strong>數(shù)組{ ElementType.METHOD, ElementType.FIELD }

@Target({
    ElementType.METHOD,
    ElementType.FIELD
})
public @interface Report {
    ...
}

@Retention

另一個(gè)重要的元注解@Retention定義了Annotation的生命周期

  • 編譯期:RetentionPolicy.SOURCE;
  • class文件:RetentionPolicy.CLASS;
  • 運(yùn)行期:RetentionPolicy.RUNTIME。

如果@Retention不存在,則該Annotation默認(rèn)為CLASS因?yàn)橥ǔN覀冏远x的Annotation都是RUNTIME,所以,務(wù)必要加上@Retention(RetentionPolicy.RUNTIME)這個(gè)元注解:

@Retention(RetentionPolicy.RUNTIME)
public @interface Report {
    int type() default 0;
    String level() default "info";
    String value() default "";
}

@Repeatable

使用@Repeatable這個(gè)元注解可以定義Annotation是否可重復(fù)。這個(gè)注解應(yīng)用不是特別廣泛。

@Repeatable(Reports.class)
@Target(ElementType.TYPE)
public @interface Report {
    int type() default 0;
    String level() default "info";
    String value() default "";
}

@Target(ElementType.TYPE)
public @interface Reports {
    Report[] value();
}

經(jīng)過(guò)@Repeatable修飾后,在某個(gè)類型聲明處,就可以添加多個(gè)@Report注解:

@Report(type=1, level="debug")
@Report(type=2, level="warning")
public class Hello {
}

@Inherited

使用@Inherited定義子類是否可繼承父類定義的Annotation@Inherited僅針對(duì)@Target(ElementType.TYPE)類型的annotation有效,并且僅針對(duì)class的繼承,對(duì)interface的繼承無(wú)效:

@Inherited
@Target(ElementType.TYPE)
public @interface Report {
    int type() default 0;
    String level() default "info";
    String value() default "";
}
//Report注解 可以放在 類定義的前面  且父類有Report注解的話,
可被子類繼承該注解 

在使用的時(shí)候,如果一個(gè)類用到了@Report

@Report(type=1)
public class Person {
}

則它的子類默認(rèn)也定義了該注解:

public class Student extends Person {
}

如何定義Annotation

我們總結(jié)一下定義Annotation的步驟:

第一步,用@interface定義注解:

public @interface Report {
}

第二步,添加參數(shù)、默認(rèn)值:

public @interface Report {
    int type() default 0;
    String level() default "info";
    String value() default "";
}

把最常用的參數(shù)定義為value(),推薦所有參數(shù)都盡量設(shè)置默認(rèn)值。

第三步,用元注解配置注解

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Report {
    int type() default 0;
    String level() default "info";
    String value() default "";
}

其中,必須設(shè)置@Target@Retention,@Retention一般設(shè)置為RUNTIME,因?yàn)槲覀冏远x的注解通常要求在運(yùn)行期讀取。一般情況下,不必寫@Inherited@Repeatable。

(Target元注解 表明定義的注解能放什么位置;Retention元注解 表明定義的注解的生命周期)

小結(jié)

Java使用@interface定義注解:

可定義多個(gè)參數(shù)和默認(rèn)值,核心參數(shù)使用value名稱;

必須設(shè)置@Target來(lái)指定Annotation可以應(yīng)用的范圍;

應(yīng)當(dāng)設(shè)置@Retention(RetentionPolicy.RUNTIME)便于運(yùn)行期讀取該Annotation。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-453593.html

到了這里,關(guān)于Java|注解之定義注解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • catface,使用Interface定義Controller,實(shí)現(xiàn)基于Http協(xié)議的RPC調(diào)用

    : Interface定義Controller;feign服務(wù)端;feign interface;Http RPC;cat-client;cat-server;catface; 概???要: catface ,使用類似 FeignClient 的Interface作為客戶端發(fā)起Http請(qǐng)求,然后在服務(wù)端使用實(shí)現(xiàn)了這些Interface的類作為 Controller 角色,將客戶端、服務(wù)端通過(guò)Interface耦合在一起,實(shí)

    2024年02月09日
    瀏覽(26)
  • Java中的注解,自定義注解

    Java中的注解,自定義注解

    框架 = 注解 + 反射 + 設(shè)計(jì)模式 注解( Annotation )是從JDK5.0開始引入,以“@注解名”在代碼中存在。 Annotation 可以像修飾符一樣被使用,可用于修飾包、類、構(gòu)造器、方法、成員變量、參數(shù)、局部變量的聲明。還可以添加一些參數(shù)值,這些信息被保存在 Annotation 的 “name=valu

    2023年04月16日
    瀏覽(25)
  • Java實(shí)現(xiàn)自定義注解

    Java實(shí)現(xiàn)自定義注解

    (1)Java實(shí)現(xiàn)自定義注解其實(shí)很簡(jiǎn)單,跟類定義差不多,只是屬性的定義可能跟我們平時(shí)定義的屬性略有不同,這里會(huì)給大家詳解,先來(lái)看代碼: 上面代碼就實(shí)現(xiàn)了一個(gè) 自定義注解 , 實(shí)現(xiàn)自定義注解需要最少指定 兩個(gè) 基本條件 : ①注解的作用范圍②注解的生命周期 ,那

    2023年04月19日
    瀏覽(24)
  • Java中自定義注解

    當(dāng)使用Java編寫應(yīng)用程序時(shí),我們常常使用注解來(lái)為程序添加附加信息,并且可以在運(yùn)行時(shí)讀取這些注解。除了Java提供的預(yù)定義注解外,我們還可以自定義注解來(lái)滿足自己的需求。在本文中,我們將介紹Java中自定義注解的基礎(chǔ)知識(shí)。 一、什么是注解? 注解是一種元數(shù)據(jù),可

    2024年02月14日
    瀏覽(24)
  • Java自定義注解

    Java自定義注解

    目錄 一、什么是自定義注解 1)Java注解簡(jiǎn)介 2)Java注解分類 JDK基本注解 JDK元注解 自定義注解 如何自定義注解? 二、自定義注解 1)獲取類上注解值 2)獲取類屬性上的注解屬性值 3)獲取方法上的注解值? 4)獲取參數(shù)修飾注解對(duì)應(yīng)的屬性值 三、aop應(yīng)用自定義注解 自定義注

    2024年02月19日
    瀏覽(21)
  • Java的自定義注解

    Java的自定義注解

    ????????自定義注解包括注解聲明、元注解、運(yùn)行時(shí)處理器三個(gè)部分。注解聲明指定了注解的名稱、作用域、成員等信息;元注解則用來(lái)對(duì)注解進(jìn)行修飾;運(yùn)行時(shí)處理器則負(fù)責(zé)在程序運(yùn)行過(guò)程中處理注解,并根據(jù)注解提供的信息執(zhí)行相應(yīng)的邏輯。自定義注解在編寫框架、插

    2024年02月03日
    瀏覽(24)
  • Java注解源碼分析,實(shí)現(xiàn)自定義注解通過(guò)反射獲取

    JDK5.0 引入,可以通過(guò)反射機(jī)制動(dòng)態(tài)獲取,大量應(yīng)用于java框架中 內(nèi)置注解 @Override 重寫父類方法時(shí) @Deprecated 使用它存在風(fēng)險(xiǎn),可能導(dǎo)致錯(cuò)誤 可能在未來(lái)版本中不兼容 可能在未來(lái)版本中刪除 一個(gè)更好和更高效的方案已經(jīng)取代它 @SuppressWarnings 告訴編譯器忽略指定的警告,不用在

    2024年02月03日
    瀏覽(21)
  • 一文詳解Java自定義注解

    一文詳解Java自定義注解

    目錄 簡(jiǎn)介 JDK注解 @Target @Retention @Documented @Inherited 第三方注解 自定義注解 舉例 默認(rèn)字符串注解 實(shí)現(xiàn)指定包名稱掃描注解 注解( Annotation )是Java SE 5.0 版本開始引入的概念,它是對(duì) Java 源代碼的說(shuō)明,是一種元數(shù)據(jù)(描述數(shù)據(jù)的數(shù)據(jù))。 Java中的注解主要分為以下三類: JDK的

    2024年02月06日
    瀏覽(59)
  • 第四篇:SQL語(yǔ)法-DDL-數(shù)據(jù)定義語(yǔ)言

    第四篇:SQL語(yǔ)法-DDL-數(shù)據(jù)定義語(yǔ)言

    DDL英文全稱是Data Definition Language(數(shù)據(jù)定義語(yǔ)言),用來(lái)定義關(guān)系模式、刪除關(guān)系、修改關(guān)系模式以及創(chuàng)建數(shù)據(jù)庫(kù)中的各種對(duì)象 1.列出所有已定義數(shù)據(jù)庫(kù) 2.查詢當(dāng)前所處數(shù)據(jù)庫(kù) (注:尖括號(hào)內(nèi)的內(nèi)容是可選項(xiàng)) (注:尖括號(hào)內(nèi)的內(nèi)容是可選項(xiàng)) 使用以上命令進(jìn)行測(cè)試~注意命

    2024年02月20日
    瀏覽(27)
  • java語(yǔ)法(二)線程并發(fā)、Juit單元測(cè)試、反射機(jī)制、注解、動(dòng)態(tài)代理、XML解析、JVM

    java語(yǔ)法(二)線程并發(fā)、Juit單元測(cè)試、反射機(jī)制、注解、動(dòng)態(tài)代理、XML解析、JVM

    正則表達(dá)式驗(yàn)證網(wǎng)站 1、 ? :表示前邊這個(gè)字符可以出現(xiàn)0次或者1次。例如下邊 /used? 既可以匹配 use 也可以匹配 used 。 2、 * :匹配0個(gè)或者多個(gè)字符, * 號(hào)代表前邊這個(gè)字符可以出現(xiàn)0次或者多次。例如 /ab*c 可以匹配 ac、abc、abbbbc 3、 + :與 * 號(hào)不同的是, + 需要前面這個(gè)字符

    2024年02月06日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包