JAVA 中的注解-Annotation

java1.5之后引入的特性,与类和接口同一层次  

注解本质

* public interface 注解名 extends java.lang.annotation.Annotation {}

* 注解本质上是一个接口,默认继承Annotation接口

注解的作用

1. 格式检查:比如@Overload 
2. 充当配置:运行时动态获取注解信息,实现配置文件的功能
3. 减少重复工作:比如第三方框架xUtils,通过注解@ViewInject减少对findViewById的调用,类似的还有(JUnit、ActiveAndroid等)> 

还没接触到第三种

jdk中预定义的注解

*  @Overrid : 检测方法是否继承自父类或者接口
*  @Deprecated : 表示内容已经过时
*  @SupressWarnings : 压制警告 
	*  一般传递参数all 

自定义注解

* 格式:
	元注解 
	public @interface 注解名称{}
* 属性:接口中的成员方法
	* 要求:
		1. 属性的返回值类型
			- 基本数据类型
			- String
			- 枚举类型
			- 注解
			- 以上类型的数组
		2. 使用注解时要给属性赋值
			- 属性也就是抽象方法,可以用 default 设置默认值
			  * int 属性()default 初始值;
			- 当属性名为value 时,并且只有一个属性时,使用注解可以省略value直接填写属性值
			- 属性为数组时使用{}包裹数据,当数组只有一个数据时可以省略{}
		
* 元注解:描述注解的注解  
	* @Target:注解作用的位置
		* 属性:enum ElementType 
			* TYPE —— 类
			* FIEID —— 成员变量
			* METHOD —— 方法
			* PARAMETER —— 参数
			* CONSTRUCTOR —— 构造器
			* LOCAL_VARIABLE —— 局部变量
			* ANNOTATION_TYPE —— 注解
			* PACKAGE —— 包
			---------java1.8之后-------------
			* TYPE_PARAMETER —— 键入参数(?)
			* TYPE_USE —— 使用类型
			---------java 9之后-------------				
			* MODULE —— 模块
	* @Retention:注解保留时间
		* 属性:enum RetentionPolicy
			* SOURCE —— 源文件时期,丢弃于编译时期
			* CLASS —— 字节码文件,运行时不被JVM保留(这是默认行为)
			* RUNTIME —— 运行时期,所以可以被反射读取
	* @Document:被包含在Javadoc种
		* 可以用javadoc 方法文档化,生成API
	* @Inherited:子类可以继承父类的注释

类中获取注释的方法

Class<类名称> demo = (类名称.class);
自定义注解 anno = demo.getAnnotation(自定义注解.class);
anno.属性;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值