JDK常见的注解:
@Override: 表示注解修饰的方法必须满足重写的规则
@Deprecated: 表示成员过时,编译器可以在程序运行的时候获取到该注解
@SupressWarnings: 表示忽略编译器的警告
@FunctionalInterface: 表示该接口是一个函数式接口,并且可以作为Lambda表达式参数传入
函数式接口:只有一个抽象方法的接口
注解的分类:
按照运行的机制分类:
源码注解:注解只在源码中有效,当编译生成字节码文件的时候,注解就不存在了
编译时注解:注解在源码和编译时期有效,在JVM运行的时候就不存在了
运行时注解:注解在源码和编译有效,同时在程序的执行过程也存在(反射获取运行时注解,从而获取注解的配置 信息,动态的改变程序的逻辑)
元注解:对注解进行注解
按照来源分类:
JDK中自带的注解:@Overrider,@Deprecated
第三方注解:@Table,@Column,@Component,@Service,@Bean
自定义注解:自己定义注解自己使用在自己的代码中
注解的基本语法:
1 注解是由@interface 关键字来描述的
2 注解是有成员的,这个成员类似成员变量,写法类似成员方法,没有参数没有声明异常
3 注解可以是 primitive type,String,Class,annotation,enumeration,一维数组
4 注解成员可以有默认值 int age() default 18;
5 注解规范之一:如果一个注解中只有一个成员,那么这个成员属性的名称叫做value;
6 如果一个注解没有任何成员,那么把该注解称为标记注解
常见的元注解:
@Retention: 表示对它所标记的元素的生命周期(参考的范围看RetentionPolicy枚举类)
@Target: 表示标记定义的注解可以和什么目标元素绑定
@Inherited: 表示该注解可以被继承
@Document: 表示该注解可以被生成API文档