Java元注解Retention代碼示例介紹
1.注解聲明:通過@interface就可以聲明一個(gè)注解。
@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)文章
Java數(shù)據(jù)結(jié)構(gòu)與算法之棧(Stack)實(shí)現(xiàn)詳解
這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)筆記第二篇,Java數(shù)據(jù)結(jié)構(gòu)與算法之棧Stack實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Java用戶交互scanner及運(yùn)算結(jié)構(gòu)代碼詳解
這篇文章主要介紹了Java用戶交互scanner及運(yùn)算結(jié)構(gòu)代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
Java concurrency線程池之Callable和Future_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency線程池之Callable和Future,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
Mybatis模糊查詢及自動映射實(shí)現(xiàn)詳解
這篇文章主要介紹了Mybatis模糊查詢及自動映射實(shí)現(xiàn)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02

