类型注解:
关于元注解@Target的参数类型ElementType枚举值多了两个:TYPE_PARAMETER,TYPE_USE
ElementType.TYPE_PARAMETER:表示该注解能写在类型变量的声明语句中(如,泛型声明)
ElementType.TYPE_USE:表示该注解能写在使用类型的任何语句中。
具体举例:
class Generic<@MyAnnotation T>{
public void show()throws @MyAnnotation RuntimeException{
ArrayList<@MyAnnotation String> list =new ArrayList<>();
int num = (@MyAnnotation int)10L;
}
MyAnnotation.java
import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
@Inherited
@Repeatable(MyAnnotations.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({TYPE,FIELD,METHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE,TYPE_PARAMETER,TYPE_USE})
public @interface MyAnnotation {
????String value()default "Hello";
}