Java注解
注解的分类:
按运行机制分:{
源码注解:注解只在源码时存在,编译成.class文件就不存在了
编译时注解:注解在源码和.class文件中都存在(@Override;@Deprecated;@SuppressWarnings)
运行时注解:在运行阶段还会起作用,甚至影响程序的运行逻辑(@Autowired;)
}
按来源分:{
来自jdk的注解:
来自第三方的注解:
自己定义的注解:
}
元注解:注解的注解
① jdk自带的注解(annotation):
@Override:覆盖(继承)父类中的方法
@Deprecated:指方法已过时
@SuppressWarnings:忽略警告提示(例如:@SuppressWarnings("deprecation"))
② Java第三方注解:
Spring:{
@Autowired:在本类中注入引用类的实例(例如:service层注入dao实例)
@Service
@Repository
}
Mybatis{
@InsertProvider
@UpdateProvider
@Options
}
③ 元注解:
@Target:注解的作用域
(
CONSTRUCTOR:构造方法声明,
FIELD:字段声明,
LOCAL_VARIABLE:局部变量声明,
METHOD:方法声明,
PACKAGE:包声明,
PARAMETER:参数声明,
TYPE:类/接口
)
@Retention:注解的生命周期
(
RUNTIME:运行时存在,可通过反射读取:
SOURCE:只在源码显示,编译时丢弃;
CLASS:编译时会记录到.class文件中,运行时忽略
)
@Inherited:允许子类继承(只能继承类上的注解,不能继承方法上的注解)
@Documented:生成javadoc时会包含注解
④ 自定义注解:
语法:@<注解名> (<成员名1>=<成员值1>,<成员名2>=<成员值2>...)
格式:
@Description(desc="I am eyeColor",author="Mooc boy",age=18)
public String eyeColor(){
return "red";
}