JavaSE进阶

8.2.5 JDK1.8注解的新特性

Java 8对注解处理提供了两点改进:可重复的注解及可用于类型的注解。此外,反射也得到了加强,在Java8中能够得到方法参数的名称。这会简化标注在方法参数上的注解。

1、可重复注解

package com.atguigu.anno;

 

import java.lang.annotation.ElementType;

import java.lang.annotation.Target;

 

 

public class TestOldAnnotation {

 

    @RoleAnnotations({@RoleAnnotation(role="admin"),@RoleAnnotation(role="manager"),@RoleAnnotation(role="saler")})

    public void add(){

    }

 

}

@Target(ElementType.METHOD)

@interface RoleAnnotation{

    String role() default "admin";

}

 

//表示target是所有

@interface RoleAnnotations{

    RoleAnnotation[] value();

}

JDK1.8之后,可读性更好

package com.atguigu.anno;

 

import java.lang.annotation.ElementType;

import java.lang.annotation.Repeatable;

import java.lang.annotation.Target;

 

public class TestNewAnnotation {

 

       @LimitAnnotation(role="admin")

       @LimitAnnotation(role="manager")

       @LimitAnnotation(role="saler")

       public void test(){

 

       }

}

 

@Target(ElementType.METHOD)      此处的target必须与LimitAnnotation一致

@interface LimitAnnotations{

       LimitAnnotation[] value();

}

 

@Repeatable(LimitAnnotations.class)

@Target(ElementType.METHOD)

@interface LimitAnnotation{

       String role() default "admin";

}