注解的相关概念:
注解出现的版本:jdk1.5
Annotation(注解):其实代码中的特殊标记,可以在编译、类加载、运行被读取,并通过相应的处理。通过使用Annotation,程序可与在不改变原有逻辑的情况下,在源文件嵌入一些补充信息。代码分析工具、开发工具、和部署工具可以通过这培训补充信息进行验证或者部署。
常用的框架Spring就是在使用到了上面的原理,通过注解@Controller、@Service和@RequestMapping等注解处来在编译、类加载、运行时通过反射对使用了注解的类或者方法进行相应的处理,实现对应的功能,这样就可以在不改变原有逻辑的情况下,在源文件嵌入一些补充信息和拓展一些功能。
注解的作用:用于为程序元素(类、方法、属性等)设置元数据。
1、jdk提供三个基础注解
基本的Annotation:
Java提供的基本的Annotation:
- @Override
- @Deprecated
- @SuppressWarnings
1.1限定重写父类方法:@Override
限定重写父类方法:@Override
用于指定方法覆盖的,可以强制一个子类必须要覆盖父类的方法。
例如:我们经常覆盖的toString()方法
@Override注解的定义:
从上面定义的**@Override的来看,该注解用来指定方法重写的,可以强制一个子类必须覆盖父类**的方法。在方法上适用 @Override Annotation的作用是告诉编译器检查该方法,如果父类或者接口中没有这个方法就会报错。可以避免我们在写的时候发生错误。
// 子类
public class SubClass extends SuperClass {
// 这里标注了该方法是重写父类的info方法
// 如果不小心写错成了inf0,加上@Override注解,就会在编写阶段报错
@Override
public void info(){
System.out.println("SubClass");
}
}
// 父类
class SuperClass{
public void info(){
System.out.println("SuperClass");
}
}
在IDE工具中,如果使用了@Override注解,而父类没有该方法,则会报错,可以避免在覆盖父类方法的时候出现一些错误。
1.2、标示已经过时:@Deprecated
用于表示某个类(某个方法)已经过时,当使用这些过时的类或者方法的时候,IDE编辑器就会发出警告
@Deprecated 的定义
用于表示某个程序元素(类、方法等)已过时,但其他程序使用已过时的类、方法的时候,编译器会发出警告。
public class AnnotationTest{
public static void main(String[] args) {
AnnotationTest test = new AnnotationTest();
test.deprecatedMethod();
}
@Deprecated // 使用 @Deprecated 来标注该方法已经过时间了
public void deprecatedMethod(){
System.out.println("我已经过时了");
}
}
上面的编写代码的时候,编译器会发出警告,但是该方法还是可以正常执行的
注意:@Deprecated Annotation的作用于文档注释中的**@deprecated** 标记的作用基本一样,但用法不同,前者是jdk1.5之后才出现的注解,是直接用于接口、类、方法等上面的。
1.3、抑制编译器警告:@SupperssWarnings
指示被改注解标识的程序元素(以及在该程序中所有子元素)取消指定的编译器警告。
用于取消显示指定的编译器警告