1、注解概述
1.1、注解介绍
(1)含义
注解也称为元数据,用来修饰包、类、方法、属性、构造器、局部变量。
(2)作用
同注释一样,注解不影响程序逻辑,但注解可以被编译或运行,相当于嵌入在代码中的补充信息。
(3)使用方式
使用注解时要在其前面增加**@符号**,并把该注解当成一个基本的修饰符使用,用于修饰它支持的程序元素。
1.2、注解使用场景
(1)JavaSE注解作用
- ①标记过时功能
- ②忽略警告
(2)JavaEE
- ①配置应用程序的任何切面
- ②代替旧版JavaEE所遗留的繁冗代码和XML配置
2、基本注解之@Override
-
含义:编译器进行语法校验,限定某个方法是重写父类的方法,该注解只能用于方法
-
范例:
// 1、创建父类
class Father{
public void fly(){
System.out.println("站在时代的风口,猪都能飞起来!!!");
}
}
// 2、创建子类
class Son extends Father{
@Override
public void fly(){
System.out.println("猪又跌下来了,太惨了!!!!!");
}
}
// 3、main方法调用
public class String01 {
public static void main(String[] args) {
Son son = new Son();
son.fly();
}
}
- 运行结果
- 详细解读:
- 主要作用:@Override注解放在fly方法上,编译器就会检查该方法是否真的重写了父类的方法,如果的确重写了,则编译通过,如果没有构成重写,则编译错误。
3、基本注解之@Deprecated
-
含义:表示某个程序元素(类、构造器)已过时,即可以使用但不推荐;
-
应用场景:一般用来版本升级过度
-
范例:
// 1、创建父类
class Father{
public void fly(){
System.out.println("站在时代的风口,猪都能飞起来!!!");
}
}
// 2、创建子类
class Son extends Father{
@Override
public void fly(){
System.out.println("猪又跌下来了,太惨了!!!!!");
}
}
// 3、main方法调用
public class String01 {
public static void main(String[] args) {
Son son = new Son();
son.fly();
}
}
- 如图
4、基本注解之@SupperssWarnings
-
含义:抑制编译器警告,即不显示警告
-
范例:不加注解前
public class String01 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("one");
list.add("two");
list.add("three");
System.out.println(list.get(2));
}
}
- 显示界面
- 范例:加注解后
public class String01 {
@SuppressWarnings({"rawtypes","unchecked","unused"})
public static void main(String[] args) {
List list = new ArrayList();
list.add("one");
list.add("two");
list.add("three");
System.out.println(list.get(2));
}
}
- 显示界面
5、元注解
- 含义:修饰注解的注解,主要是看源码时了解
5.1、元注解之@Target
-
含义:指定注解可以能用于修饰那些程序元素
-
值详述:
- ElementType.ANNOTATION TYPE/PACKAGE/METHOD…
-
范例
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
- 解读:Override注解只能作用于METHOD
5.2、元注解之Retention
-
含义:指定注解的作用时间范围,包含SOURCE,CLASS,RUNTIME三种
-
值详述
- RetentionPoilcy.SOURCE:编译器使用后,直接丢弃这种策略的注释
- RetentionPolicy.CLASS:编译器将把注释记录在class文件中。当运行java程序后JVM不会保留,这是默认值(编译时生效)
- RetentionPolicy.RUNTIME:编译器将把注释记录在class文件中。当运行java程序后JVM会保留注释,程序可以通过反射获取该注解(运行时生效)
-
作用示意图如下
- 范例
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}
- 解读:Override应用时间范围在编译器检查时,编译运行不会被保留
5.3、元注解之Documented
- 含义:指定该注解是否会在javaCode体现,即被该注解修饰的相关元素能被javadoc工具提取成文档,即在生成文档时,可以看到该注释。
暂留以后细述
5.4、元注解之Inherited
- 含义:子类会继承父类注解
暂留以后细述