Java元注解Retention代碼示例介紹
1.注解聲明:通過@interface就可以聲明一個注解。
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface BindView {
int value();
}@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Get {
String value() default "";
}@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Queue {
String value() ;
}2. @Target 元注解,注解的注解,它的取值定義在ElementType枚舉類中。
@Target注解 用來定義我們自定義注解代碼的什么位置。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE})
public @interface Target {
ElementType[] value();
}1)ElementType.FIELD 使用在成員變量上。
2)ElementType.METHOD 使用在成員方法上。
3)ElementType.PARAMETER 使用在方法參數(shù)上。
4)ElementType.TYPE 使用在類、接口上。
5)ElementType.ANNOTATION_TYPE 使用在注解上。
3.@Retention 元注解,取值定義在RetentionPolicy枚舉類中。
用來定義注解生效的階段:
1)SOURCE:注解只在源碼階段有效,不會編譯到字節(jié)碼中。
2)CLASS:注解在源碼、字節(jié)碼階段有效,運(yùn)行階段不存在。
3)RUNTIME:注解在源碼、字節(jié)碼、運(yùn)行階段有效,也是最長用的。
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE})
public @interface Retention {
RetentionPolicy value();
}public enum RetentionPolicy {
SOURCE,
CLASS,
RUNTIME;
private RetentionPolicy() {
}
}2.注解的使用
@BindView(R.id.start_activity)
TextView startTextView; @Get("http://www.baidu.com")
Call getPerson(@Queue("name") String name,@Queue("200")int price);
@Get("http://www.baidu.com")
Call getPerson();注解的使用很簡單。
注解單獨(dú)存在沒有任何意義,必須配合其他技術(shù)。
應(yīng)用:
1)注解+Apt注解處理器,生產(chǎn)java代碼 ,databinding、butterknife、dagger2 hilt
2)注解+代碼埋點(diǎn)
3)注解+反射+動態(tài)代理 retrofit xUtils lifecycle
以上應(yīng)用會在后面的文章繼續(xù)分享。如果通過反射來獲取注解上的值,Retrofit框架原理。
到此這篇關(guān)于Java元注解Retention代碼示例介紹的文章就介紹到這了,更多相關(guān)Java Retention內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springboot+Shiro記錄用戶登錄信息并獲取當(dāng)前登錄用戶信息的實(shí)現(xiàn)代碼
這篇文章主要介紹了Springboot+Shiro記錄用戶登錄信息,并獲取當(dāng)前登錄用戶信息,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
spring boot 自定義規(guī)則訪問獲取內(nèi)部或者外部靜態(tài)資源圖片的方法
這篇文章主要介紹了spring boot 自定義規(guī)則訪問獲取內(nèi)部或者外部靜態(tài)資源圖片的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01
mysql+spring+mybatis實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離的代碼配置
今天小編就為大家分享一篇關(guān)于mysql+spring+mybatis實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離的代碼配置,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-03-03
Idea連接數(shù)據(jù)庫并執(zhí)行SQL語句的方法示例
這篇文章主要介紹了Idea連接數(shù)據(jù)庫并執(zhí)行SQL語句的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
SpringBoot中操作Bean的生命周期的方法總結(jié)
在SpringBoot應(yīng)用中,管理和操作Bean的生命周期是一項(xiàng)關(guān)鍵的任務(wù),這不僅涉及到如何創(chuàng)建和銷毀Bean,還包括如何在應(yīng)用的生命周期中對Bean進(jìn)行精細(xì)控制,本文給大家總結(jié)了SpringBoot中操作Bean的生命周期的方法,需要的朋友可以參考下2023-12-12
Spring Boot實(shí)戰(zhàn)之靜態(tài)資源處理
這篇文章主要介紹了Spring Boot實(shí)戰(zhàn)之靜態(tài)資源處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
java中 String和StringBuffer的區(qū)別實(shí)例詳解
這篇文章主要介紹了java中 String和StringBuffer的區(qū)別實(shí)例詳解的相關(guān)資料,一個小的例子,來測試String和StringBuffer在時間和空間使用上的差別,需要的朋友可以參考下2017-04-04

