主要有9个
只能用于其他注解,注解的保留策略
只能用于其他注解,用来标记接口
只能用于注解,声明注解可以用于的声明类型,如果不声明则此注解可以用于所有的类型。
应用范围通过此枚举类进行限定
public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
}
代码示例
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface Single {
int value();
String name() default "必须要有默认值";
}
class Test{
@Single(100)
public int index;
}
被用于注解,标注后此注解可以被子类继承,在查找注解时,如果子类没有会在父类中查找注解
java8新特性重复注解
必须要有声明类型
必须要有value的值
返回类型必须是声明的注解的类型的数组
代码示例:
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(SingleChild.class)
public @interface Single {
int value();
}
//必须要有声明类型
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@interface SingleChild {
//必须要有value
Single[] value();
}
class Test{
@SingleChild({@Single(100),@Single(200)})
public int index;
}
只能用于方法,保证父类中的方法被重写而不是被重载
声明过时
java8提供,声明函数式接口
声明不安全代码检查,例如可变长度参数的方法或者声明为static final 的方法
代码示例
@SafeVarargs
public static void ww(String ...name){}
@SafeVarargs
public final void ee(String ...name){
}
抑制一个或者多个编译器可能发生的警告
暂无