分类:1.预定义注解 2. 自定义注解 3. 元注解
预定义注解就是JDK自带的一些注解,该注解被JVM而解析。
1. @Override: 重写得注解。符合重写得规则。
2. @Deprecated: 表示已过时。
3. @SuppressWarnings: 表示压制警告。
4. @FunctionInterface: 表示函数式接口。表示该接口中有且仅有一个抽象方法。
自定义注解
public @interface 注解名{
//注解属性
}
使用 类 方法 属性 加@注解名
public class Test {
public static void main(String[] args) {
Info i=new Info();
i.name="周世玉";
i.show();
}
}
//定义好注解了
@interface My{
//注解属性
}
//使用注解
@My
class Info{
@My
public String name;
@My
public void show(){
System.out.println("show================="+name);
}
元注解
1. @Target(value=可以取下面这些内容): 作用限制注解使用得位置。
/** 表示可以作用在类,接口,枚举 */
TYPE,
/** 属性 */
FIELD,
/** 普通方法上 */
METHOD,
/** 方法参数 */
PARAMETER,
/** 构造方法上 */
CONSTRUCTOR,
/** 局部变量 */
LOCAL_VARIABLE
2. @Retention: 注解什么时候生效。默认时源码 java经历了那些阶段。
源码阶段-->字节码阶段--->运行阶段
/**
* 源码时生效
*/
SOURCE,
/**
* 字节码时生效
*/
CLASS,
/**
* 运行时生效。
* 在JVM内存中还有该注解。
都会被设置为运行时有效
*/
RUNTIME
3. @Documented 当生产API文档时该注解还存在。
4. @Inherited 是否运行被子类继承。
自定义高级
@interface 注解名{
数据类型 属性名() default 默认值;
}
数据类型: 基本类型,字符串类型,枚举类型【常量】,注解类型,数组类型