# 注解
定义新注解使用 @interface关键字.
示例,定义一个简单的注解
public @interface Test
{
}
默认情况下,注解可以用于修饰任何程序元素,包括类,接口,方法等.
可以定义成员变量,注解中的成员变量是以方法的形式来定义的.
public @interface Test
{
String name();
int age();
}
使用:
@Test(name="xxx",age=6)
public void test(){
}
可以为成员变量指定初始值
public @interface Test
{
String name() default "xxx";
int age() default 10;
}
如果为注解的成员变量指定了默认值,使用该注解的时候则可以不为这些成员变量指定值,而是直接使用默认值.
# 常用的注解
@Target:注解的作用目标
@Target(ElementType.TYPE)——接口、类、枚举、注解 @Target(ElementType.FIELD)——字段、枚举的常量 @Target(ElementType.METHOD)——方法 @Target(ElementType.PARAMETER)——方法参数 @Target(ElementType.CONSTRUCTOR) ——构造函数 @Target(ElementType.LOCAL_VARIABLE)——局部变量 @Target(ElementType.ANNOTATION_TYPE)——注解 @Target(ElementType.PACKAGE)——包
@Retention:注解的保留位置
RetentionPolicy.SOURCE:这种类型的Annotations只在源代码级别保留,编译时就会被忽略,在class字节码文件中不包含。 RetentionPolicy.CLASS:这种类型的Annotations编译时被保留,默认的保留策略,在class文件中存在,但JVM将会忽略,运行时无法获得。 RetentionPolicy.RUNTIME:这种类型的Annotations将被JVM保留,所以他们能在运行时被JVM或其他使用反射机制的代码所读取和使用。 @Document:说明该注解将被包含在javadoc中 @Inherited:说明子类可以继承父类中的该注解
关于评论
评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!