java的注解(Annotation)机制
什么是注解?
在JDK中我们经常看到@Override @SuppressWarnings(“unchecked”),@Deprecated这三种注解。我们好奇的点开其中的一个实现,代码非常简单。其实在我们使用各种开发框架时候,注解也是经常用到的相关的代码,比如SpringBoot里的@RestController,@Autowired等。下面我们就详细介绍一下注解。
|
|
如何自定义注解?
Java5.0定义了4个标准的meta-annotation类型:@Target,@Retention,@Documented,@Inherited。
@Target
说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。
|
|
|
|
@Retention
定义该注解的生命周期。
|
|
@Documented
是否将注解信息添加在java文档中。
@Inherited
定义该注释和子类的关系,是否允许子类继承该注解。
自定义注解的格式:
|
|
注意事项:
1.可支持基本数据类型,String类型,Class类型,enum类型,Annotation类型,以上所有类型的数组。
2.只能用public或默认(default)这两个访问权修饰.例如,String value();这里把方法设为default默认类型。
3.如果只有一个参数成员,最好把参数名称设为”value”。
示例说明?
当RetentionPolicy.RUNTIME为RetentionPolicy.SOURCE或者RetentionPolicy.CLASS是无打印输出的。
|
|
|
|