jdk自带的注解:
1、@Override 重写父类方法
2、@Deprecated 方法过时
3、@SuppressWarnings("xxx") 忽略了xxx警告
常见第三方注解:
Spring:@Autowired @Service @Repository
Mybatis:@InsertProvider @UpdateProvider @Options
注解的分类
1、按照运行机制分为
(1)源码注解:注解只在源码中存在,编译成.class文件就不存在了
(2)编译时注解:注解在源码和.class文件中都存在(如:JDK内置系统注解)
(3)运行时注解:在运行阶段还起作用,甚至会影响运行逻辑的注解(如:Spring中@Autowried)
2、按照来源分为
(1)JDK内置系统注解
(2)元注解
(3)自定义注解
(4)第三方注解
自定义注解
自定义注解的语法要求
1、使用@interface关键字定义注解
2、成员以无参无异常方式声明
3、可以用default为成员指定一个默认值
4、如果注解只有一个成员,则成员名必须取名value(),在使用时可以忽略成员名和赋值号(=);
5、成员类型是受限的,合法的类型包括原始类String,Class,Annotation,Enumeration
6、注解类可以没有成员,没有成员的注解称为标识注解
public @interface javen{
String name();
String author();
int age() default 19;
}
元注解
@Documented 生成javadoc时包含注解
@Inherited 允许子类继承
@Retention(RetentionPolicy.RUNTIME):声明周期
[SOURCE只在源码显示,编译时会丢弃;
CLASS编译时会记录到class中,运行时忽略;
RUNTIME运行时存在,可以通过反射读取]
@Target({ElementType.METHOD})
[CONSTRUCTOR构造方法声明;
FIELD字段声明;
LOCAL_VARIABLE局部变量声明;
METHOD方法声明;
PACKAGE包声明;
PARAMETER参数声明;
RYPE类接口]