从java 5.0开始,为我们提供注解功能,通过注解可以限制代码的重载,过时,以及实现一些其他功能,这里,就来分析一下java的注解。
本文旨在帮助大家感性的认识注解,一般注解在架构设计中会常用到,可以让代码变得非常简洁,实现代码的复用。
注解作用
注解为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。
每当你创建描述符性质的类或者接口时,一旦其中包含了重复性的工作,那就可以考虑使用注解来简化与自动化该过程。
注解分类
内置注解
java内置的标准注解,@Override,@Deprecated,@SuppressWarnings
元注解
java元注解,分别是:
@Target
@Retention
@Documented
@Inherited
这些注解和他们所修饰的类在java.lang.annotation包中,代码都很简单,可以去查看一下。
自定义注解(需要结合注解处理器)
使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。
定义注解格式:
public @interface 注解名 {定义体}
注解参数的可支持数据类型:
1.所有基本数据类型(int,float,boolean,byte,double,char,long,short)
2.String类型
3.Class类型
4.enum类型
5.Annotation类型
6.以上所有类型的数组
注解原理
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记。程序在运行的时候可以利用java的反射机制来了解你的类及各种元素上有无何种标记,针对不同的标记,就去做相应的事件。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
就好比定义一个整型变量就是用int,这就是语法!
我们一般引入的一些库,那些注解的处理器(一般做的是反射的处理)都在库里面实现好了,主要是通过反射实现的。
参考资料
Java 注解
https://github.com/haodf-androd-tech/tech_share/blob/master/articles/Java_Annotation.md
怎样优雅地使用java注解?
https://www.zhihu.com/question/36486629
深入理解Java:注解
http://www.cnblogs.com/ITtangtang/p/3974531.html