# 注解

定义新注解使用 @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:说明子类可以继承父类中的该注解

关于评论

评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!