Java四个自定义注解
1. @Target
用于描述注解的使用范围(可以用在哪里),不存在该注解就不要求是某些元素上
取值(ElementType):(大写,下面小写为了方便查看)
- constructor:用于描述构造器
- field:用于描述域
- local_variable:用于描述局部变量
- method:用于描述方法
- package:用于描述包
- parameter:用于描述参数
- type:用于描述类、接口(包括注解类型)、enum声明
//该注释只能用在方法上
@Target(ElementType.METHOD)
@interface TestMenthod{}
2. @Retention
需要在什么级别保存该注释信息,用于描述注解的生命周期(被描述的注解在什么范围内有效)
取值(RetentionPolicy):(大写,下面小写为了方便查看)
- source:在源文件中有效
- class:在class文件中有效
- runtime:在运行时中有效
//用于描述类、接口(包括注解类型)、enum声明
@Target(ElementType.TYPE)
@Rentention(RetentionPolicy.RUNTIME)
@interface TestTypeRn{}
3. @Documented
表示使用该注解的元素应被javadoc或类似工具文档化,应用于类型声明,类型声明的注解会影响客户端对注解元素的使用。如果一个类型声明添加该注解,就会成为被注解元素的公共API的一部分,他是一个标记注解
//可以被javadoc此类的工具文档化
@Documented
@interface TestDC{}
4. @Inherited
表示一个注解类型会被自动继承,如果用户在类声明时查询注解类型,类声明也没有这个类型的注解,会自动查询该类的父类,会一直找,直到找到该类型注解或者到达Object为止
//被子类继承的注解
@Inherrited
@interface TestInheri{}
@interface:用来声明一个注解,注解类里的每个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型是参数的类型,可以使用default来声明参数的默认值
@interface Simple{}
总结
本章Java四个自定义注解的介绍,欢迎指出错误点,可关注公众号:Java探索学者,进行更深入的探讨