全面解析Java注解

注解
本文章为课程摘记(https://www.imooc.com/learn/456 课程链接)

用处:1.框架相关代码
2.代替相关逻辑和配置
3.高看一等

课程安排:
1.Java中的常见注解(JDK和第三方定义好的)
2.自定义注解(重要)
3.实例

**Java中的常见注解(JDK和第三方定义好的)
JDK自带注解:@Override :实现或覆盖父类的方法
@Deprecated:说明这个方法过时了,调用这个方法的时候,会出现一个横杠
@SuppressWarnings:@SuppressWarnings(“deprecation”)忽略警告
第三方注解:Spring:1.@Autowired:自动生成实例注入进去,不用写标签了
2.@Service:
3.@Repository:
Mybatis:1.@InsertProvider:
2.@UpdateProvide:
3.@Option:
注解的分类:按照运行机制分
1.源码注解:注解只在源码中存在,在.class中不存在
2.编译时注解:注解在源码和.class中存在。如@Override ,@Deprecated,@SuppressWarnings
3.运行时注解:在运行阶段起作用,甚至会影响运行逻辑的注解。如@Autowired 自动注入成员变量
按照来源分
1.来自JDK的注解
2.来自第三方的注解
3.自定义注解

元注解:注解的注解

自定义注解的语法要求:
@interface:使用@interface关键字定义注解,成员以无参无异常(注解属性不可以有参数和异常)方式声明,可以用default为成员指定一个默认值(int age() default 18;)
成员类型是受限的,合法的类型包括原始类型String,Class, Annotation,Enumeration
如果注解只有一个成员,则成员名必须取名为value(),,在使用时可以忽略成员名和赋值号(=)
注解类可以没有成员,没有成员的注解称为标识注解@Description

元注解:
@Target() :构造方法声明,字段声明,局部变量声明,方法声明,包声明,参数声明,类,接口。
@Retention(RetentionPolicy.RUNTIME):生命周期(在源代码上(SOURCE),编译时(CLASS),还是在运行时(RUNTIME))
@Inherited:标识性的元注解,子注解来继承
@Documented:生成Javadoc时会包含注解信息

如何使用自定义注解:@<注解名>(<成员名1>=<成员值1>,<成员名1>=<成员值1>,……)
@Description(desc=”I am eyeColor”, author=”Mooc boy”, age=18)
public String eyeColor(){
return “red”;
}

解析注解:通过反射获取类,函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑
这里写图片描述

猜你喜欢

转载自blog.csdn.net/fxf0927/article/details/81453107