您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java元注解Retention怎么聲明的相關(guān)知識(shí)點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識(shí),所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來(lái)了解一下吧。
1.注解聲明:通過(guò)@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枚舉類(lèi)中。
@Target注解 用來(lái)定義我們自定義注解代碼的什么位置。
@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 使用在類(lèi)、接口上。
5)ElementType.ANNOTATION_TYPE 使用在注解上。
3.@Retention 元注解,取值定義在RetentionPolicy枚舉類(lèi)中。
用來(lái)定義注解生效的階段:
1)SOURCE:注解只在源碼階段有效,不會(huì)編譯到字節(jié)碼中。
2)CLASS:注解在源碼、字節(jié)碼階段有效,運(yùn)行階段不存在。
3)RUNTIME:注解在源碼、字節(jié)碼、運(yùn)行階段有效,也是最長(zhǎng)用的。
@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();
注解的使用很簡(jiǎn)單。
注解單獨(dú)存在沒(méi)有任何意義,必須配合其他技術(shù)。
應(yīng)用:
1)注解+Apt注解處理器,生產(chǎn)java代碼 ,databinding、butterknife、dagger2 hilt
2)注解+代碼埋點(diǎn)
3)注解+反射+動(dòng)態(tài)代理 retrofit xUtils lifecycle
以上就是“Java元注解Retention怎么聲明”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。