前言
自从在B站认识了狂神这个UP主,我真的学了很多东西。今天我将分享他注解和反射课程的笔记
1. 什么是注解
[1] Annotation是从JDK 5.0开始引入的新技术
[2] Annotation的作用:
- 不是程序本身,可以对程序作出解释(这一点和注释(comment)没什么区别)
- 可已被其他程序(比如: 编译器等)读取
[3] Anotation的格式:
注释是以“@注解名”在代码中存在的,还可以添加一些参数值
例如: @SupperessWarnings(values=“unchecked”)
[4] Annotation在哪里使用?
可以附加在package,class,method,field等上面,相当于给他们添加了额外的辅助信息,我们可以通过反射机制编程实现对这些元数据的访问。
2. 内置注解
[1] @Override: 定义在java.lang.Override中,此注解只能适用于修饰方法,一般标注在我们重写父类方法上。
[2] @Deprecated: 定义在 java.lang.Deprecated中,此注解可以用于修饰方法,属性,类。表示不鼓励程序使用这样的元素,也就是被遗弃了。这种情况下,通常都是后来维护中加入了新的方法,属性或类对原本的进行了替换。(不过我们使用了也不会报错,只会在对应的地方有一条横线)
[3] @SuppressWarnings: 定义在java.lang.SuppressWarnings中,用来抑制编译器的警告信息。
与前两个注解有所不同,你需要添加一个参数才能正确使用,这些参数都是定义好的了。
使用:
@SuppressWarnings(“”)
@SuppressWarnings({})
@SuppressWarnings(value={})
@SuppressWarnings("all") #表示抑制所有的警告
@SuppressWarnings("unchecked") # 告诉编译器忽略 unchecked 警告信息,如使用List,ArrayList等未进行参数化产生的警告信息
@SuppressWarnings(values={"deprecation"}) #如果使用了使用@Deprecated注释的方法,编译器将出现警告信息。 使用这个注释将警告信息去掉。
等等......相关示例:
[1] 编码时我们总会发现如下变量未被使用的警告提示:

上述代码编译通过且可以运行,但每行前面的“感叹号”就严重阻碍了我们判断该行是否设置的断点了。这时我们可以在方法前添加 @SuppressWarnings(“unused”) 去除这些“感叹号”。
[2] 抑制单类型的警告:
//rawtypes是说传参时也要传递带泛型的参数
@SuppressWarnings("unchecked")
public void addItems(String item){
@SuppressWarnings("rawtypes")
List items = new ArrayList();
items.add(item);
}[3] 抑制多类型的警告:
@SuppressWarnings(value={"unchecked", "rawtypes"})
public void addItems(String item){
List items = new ArrayList();
items.add(item);
}[4] 抑制所有类型的警告:
@SuppressWarnings("all")
public void addItems(String item){
List items = new ArrayList();
items.add(item);
}
















