java自定义注解
来源:互联网 发布:天佑鲍比知乎 编辑:程序博客网 时间:2024/06/09 23:36
注解(Annotation),也叫元数据,一种代码级别的说明。JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。
注解作用:
- 编写文档:通过代码里标识的元数据生成文档【生成文档doc文档】
- 代码分析:通过代码里标识的元数据对代码进行分析【使用反射】
- 编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查
下面看下几个自定义注解及其使用范例:
// Sample1// Define@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})public @interface Subscribe { ThreadMode threadMode() default ThreadMode.POSTING; boolean sticky() default false; int priority() default 0;}// Usagepublic class BusinessActivity extends AppCompatActivity { .... // Called in Android ui main thread @Subscribe(threadMode = ThreadMode.MAIN) public void onMessage(MessageEvent event) { textField.setText(event.message); }}// Sample2// Define@Usagepublic class MultiStateView extends FrameLayout { public static final int STATE_UNKNOWN = -1; .... @Retention(RetentionPolicy.SOURCE) @IntDef({STATE_UNKNOWN, STATE_PRELODING_CONTENT, STATE_LODING_CONTENT, STATE_POSTLODING_CONTENT, STATE_POSTLODING_EMPTY, STATE_NONETWORK, STATE_SERVER_EXCEPTION, STATE_OTHER_EXCEPTION}) public @interface ViewState { } public void setViewState(@ViewState int state) { .... }}// Sample3// Define@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.TYPE })@Inheritedpublic @interface RequestHeader { String TIMESTAMP = "Timestamp"; String APPKEY = "AppKey"; String ACCOUNT_ID = "AccountID"; String AUTHCODE = "AuthCode"; .... String[] value() default {RequestHeader.APPID, RequestHeader.SIGN, RequestHeader.VERSIONCODE, RequestHeader.REQUESTID, RequestHeader.LANGUAGE};}// Usagepublic class AuthCodeRequest extends CommonJsonRequest<AuthCodeData> { @RequestHeader(RequestHeader.TIMESTAMP) public String timeStamp;}
- @Interface声明这是自定义注解
- @Documented声明这是一个标记注解,没有成员,可以被例如javadoc此类的工具文档化
- @Retention声明该Annotation被保留的时长, 默认RetentionPoicy.CLASS
- @Target定义了该Annotation所修饰的类型
- @Inherited声明允许子类继承父类的注解。具体测试可参考http://blog.csdn.net/snow_crazy/article/details/39381695测试代码和结果。
阅读全文
0 0
- Java注解-自定义注解
- Java注解----自定义注解
- Java注解自定义注解
- 【Java】【注解】自定义注解
- java之注解 自定义注解
- Java注解-自定义注解实例
- Java注解二 自定义注解
- Java注解及自定义注解
- java 注解详解,自定义注解
- Java注解(2)-自定义注解、注解处理器
- java自定义注解实践
- Java自定义注解
- java自定义注解
- java自定义注解
- java自定义注解
- java自定义注解
- java自定义注解
- java自定义注解
- 清空redis
- android开发艺术探索 学习笔记(三) IntentFilter的匹配规则
- 前嗅ForeSpider采集大众点评数据教程
- 线程安全
- adb查看手机设备型号、品牌、机型等信息
- java自定义注解
- js缓存变量,减少DOM操作开销
- java实现AES加密解密
- Apache Kafka0.10.0.0集群部署
- EXE和SYS通信(ReadFile WriteFile DO_BUFFERED_IO) 缓冲区方式
- Spring 在静态工具类中使用注解注入bean
- MYSQL数据库 的 decimal 字段类型
- ios 删除按钮不显示
- Elasticsearch 版本控制