定义位置一)和类并列的位置(不常用,此处不具体写了)
定义位置二)单独写一个包 包里写自定义的注解(常用,此处具体写)
1、单独的一个包anno下新new一个Annotation类
2、定义自定义注解的各项(基础)信息
/*
一、通过@Target注解标记自定义注解Lyj可以使用的位置
1、描述注解存在的位置:注解用在哪里(类上、方法上、属性上等等)
我们使用"ElementType.静态常量"的方式来指定自定义注解具体可以加在什么位置
ElementType.TYPE 应用于类的元素
ElementType.METHOD 应用于方法级
ElementType.FIELD 应用于字段或属性(成员变量)
ElementType.ANNOTATION_TYPE 应用于注解类型
ElementType.CONSTRUCTOR 应用于构造函数
ElementType.LOCAL_VARIABLE 应用于局部变量
ElementType.PACKAGE 应用于包声明
ElementType.PARAMETER 应用于方法的参数
2、格式:可以一个或多个,中间用,隔开 如:
@Target({ElementType.XXX,ElementType.XXX})
3、例子:@Target(ElementType.TYPE)
@Target({ElementType.TYPE,ElementType.METHOD})
二、通过@Retention注解标记自定义注解Lyj的生命周期
1、源文件中、字节码文件中、运行中——活多久
我们使用"RetentionPolicy.静态常量"的方式来指定自定义注解的生命周期
RetentionPolicy.SOURCE 在源文件中有效(即源文件保留)
RetentionPolicy.CLASS 在class文件中有效(即class保留)
RetentionPolicy.RUNTIME 在运行时有效(即运行时保留)
2、格式:只能写一个 如:
@Retention(RetentionPolicy.RUNTIME) 到运行时都有效
注意:值只能写一个:SOURCE CLASS RUNTIME 3选1
*/
@Retention(RetentionPolicy.RUNTIME) //注解运行时有效
@Target(ElementType.METHOD)//注解只能用来标识:方法
public @interface Lyj {
}
3、我们可以给注解进行功能增强--添加注解的属性
不常用的注解
@Documented
将此注解包含在
javadoc
中 ,它代表着
此注解会被
javadoc
工具提取成文档。在
doc
文档中的内容会因为此注解的信息内容不同而不同。
@Inherited
即如果一个类被
@Inherited
标记的注解所修饰,则该注解同样作用于这个类的子类。