听到注解这堂课,想起曾在微信公众号里

看过一篇挺有意思的分享——夜深了,源代码里突然来了一个新朋友!

2021-02-13[Lesson63]初识注解&元注解&Properties - 图1


[Annotation]
注释

描述 表现形式 快捷键
单行注释 // CTRL+/
多行注释 / / CTRL+SHIFT+/
文档注释 /* / /** + 回车(Enter)

注解

Java注解(Annotation)又称Java标注,是JDK5.0开始引入的一种全新机制。 依赖于Java强大的反射机制,通过给代码“打标签”,然后在运行时动态获取这一思想,开启了一种全新的编程体验。 注解是Java语言中一个非常强大且有用的存在,它像一种神奇的胶水,将代码模块粘合在一起,让Java编程越发的像组装积木一样方便简单。

一、注解的写法:@XXX [(一些信息)]
二、注解放置在哪里:类、方法、属性、构造、变量、参数(前面)
三、注解的作用
1.用来充当注释的作用,例如:@Deprecated
2.用来做代码的检测(验证),例如:@Override
*3.可以携带一些信息(内容),例如:文件.properties .xml 注解

四、、Java中已定义好的注解:

@Deprecated 用来说明方法是废弃的
@Override 用来做代码检测此方法是否重写
@SuppressWarnings(信息) 去掉程序中的警告
unused 变量定义后未被使用
serial 类实现了序列化接口,但不添加序列化ID号
rawtypes 用来提示集合没有定义泛型
deprecation 方法已废弃
unchecked 出现了泛型的问题,可以不检测
all 包含了以上所有(不推荐使用)

五、注解中可以携带信息,也可以不携带信息。
如果携带了信息,则信息不能随意填写,信息的类型只能是如下的类型:

①.基本数据类型
②.String类型
③.枚举类型enum
④.注解类型@
⑤.数组类型[]
数组的内部需要是如上的四种类型

六、如何自己描述一个注解类型?
1.通过@interface 定义一个新的注解类型
2.发现写法与接口非常相似(可以利用接口的特点来记忆注解)
可以描述public static final的属性,不常用,比较少见
可以描述public abstract的方法,方法要求必须有返回值,且返回值类型是‘5’的那些
3.若要使用自定义的注解
光定义还不够,还需要做很多细致的说明(需要利用Java提供好的注解来说明)
元注解(也是注解,不是拿来使用的,是用来说明注解)
@Target(目标) 描述当前的注解可以放置在哪里
@Retention(保留) 描述当前的注解的作用域
源代码文件—->编译—->字节码文件—->加载—->内存执行
SOURCE CLASS RUNTIME
@Inherited(继承) 描述当前的注解是否能被子类对象继承
@Document(文档) 描述当前的注解是否能被文档所记录
4.自己使用自己描述的注解
问题1. 在注解里面描述了一个没有参数,有返回值String[]的方法,
但在使用注解时,它让我们再次传递参数
可理解为:注解的方法是做事的,它将我们传递给他的参数搬运给了别人
@MyAnnotation(test=”abc”)
问题2. 使用别人写好的注解不用写方法名,而我们自定义的方法必须写名字
如果我们自定义的注解只有一个方法,且方法名叫value
那么在使用的时候,就可以省略方法名。
如果传递的信息是一个数组类型,数组内只有一个元素,可以省略{}
如果有两个以上的方法,每个方法都必须写名字。

七、如何解析注解内携带的信息,需要反射机制来帮忙

八、注解应用场景