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 使用在方法參數上。
4)ElementType.TYPE 使用在類、接口上。
5)ElementType.ANNOTATION_TYPE 使用在註解上。
3.@Retention 元註解,取值定義在RetentionPolicy枚舉類中。
用來定義註解生效的階段:
1)SOURCE:註解隻在源碼階段有效,不會編譯到字節碼中。
2)CLASS:註解在源碼、字節碼階段有效,運行階段不存在。
3)RUNTIME:註解在源碼、字節碼、運行階段有效,也是最長用的。
@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();
註解的使用很簡單。
註解單獨存在沒有任何意義,必須配合其他技術。
應用:
1)註解+Apt註解處理器,生產java代碼 ,databinding、butterknife、dagger2 hilt
2)註解+代碼埋點
3)註解+反射+動態代理 retrofit xUtils lifecycle
以上應用會在後面的文章繼續分享。如果通過反射來獲取註解上的值,Retrofit框架原理。
到此這篇關於Java元註解Retention代碼示例介紹的文章就介紹到這瞭,更多相關Java Retention內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!