1、@Target用法
java.lang.annotation.Target 用于设定注解范围
java.lang.annotation.ElementYype Target通过ElementType来指定注解适用范围的枚举集合
1.ElementType用法
取值 | 注解适用范围 |
METHOD | 可用于描述方法上 |
TYPE | 用于描述类、接口(包括注解类型)或enum声明上 |
ANNOTATION——TYPE | 用于注解类型上(被@interface修饰的类型) |
CONSTRUCTOR | 用于描述构造器上 |
FIELD | 用于描述域 |
LOCAL_VARIABLE | 用于描述局部变量 |
Package | 用于记录java文件的package信息 |
PARAMETER | 可用于参数上 |
重点说明:ELEMENT.PACKAGE 它并不是使用在一般的类中,而是使用在固定文件package-info.java中,
这里需要强调命名一定是“package-info”。由于package-info并不是合法的类,使用Eclipse创建的类方式会提示不合法,所以需要以创建文件的形式创建package-info.java
定义使用范围PACKAGE
@Target({ElementType.PACKAGE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
public@interface AsynLog {
}
那么创建文件:package-info.java 内容如下:
@AsynLog
package org.my.commons.logs.annotation;
/**
* 日志自定义注解
* 方法级
*/
@Target({ElementType.METHOD})
//注解只能在ElementType表示此类只能用设定的范围内使用,否则编译报错。
//例如,ElementTyoe.METHOD 表明注解只能使用在类的方法上,超出使用范围将会编译异常。
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log {
/**
*用户要保存到日志的自定义信息
*必传
*/
String info();
/**
* 用户要保存到日志的参数和值 的索引, 从0开始
* 默认不保存
* 若要保存参数列表的第2,3个,则传"1,2"
*/
String args() default "";
}
转载自:https://blog.csdn.net/u012992462/article/details/80675932