java 注解

内置注解

常用注解

主要有9个

java.lang.annotation 包

@Retention

只能用于其他注解,注解的保留策略

@Documented

只能用于其他注解,用来标记接口

@Target

只能用于注解,声明注解可以用于的声明类型,如果不声明则此注解可以用于所有的类型。

应用范围通过此枚举类进行限定

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;
}
@Inherited

被用于注解,标注后此注解可以被子类继承,在查找注解时,如果子类没有会在父类中查找注解

@Repeatable

java8新特性重复注解

  1. 必须要有声明类型

  2. 必须要有value的值

  3. 返回类型必须是声明的注解的类型的数组

代码示例:

@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;
}

java.lang 包

@Override

只能用于方法,保证父类中的方法被重写而不是被重载

@Deprecated

声明过时

@FunctionalInterface

java8提供,声明函数式接口

@SafeVarargs

声明不安全代码检查,例如可变长度参数的方法或者声明为static final 的方法

代码示例

@SafeVarargs
public static void ww(String ...name){}

@SafeVarargs
public final void ee(String ...name){
    
}
@SuppressWarnings

抑制一个或者多个编译器可能发生的警告

专用注解

暂无

你可能感兴趣的:(java)