是终于迈着老寒腿跨入了2019,加油干!工作使人快乐。
Java注解是附加在代码中的一些信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用。注解分为三类:1.内置注解;2.元注解;3.自定义注解。它们都不会直接影响到程序的语义,只是作为注解(标识)存在。
注解的作用分为三类:1.编写文档,通过代码里标识的元数据生成文档(生成文档doc文档);2.代码分析:通过代码里标识的元数据对代码进行分析(使用反射);3.编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查(Override)。
这篇文章主要讲内置注解(jdk 自带注解),有五个。废话不多说:
1.@Deprecated
意思是说此方法已过时,是因为有新的API的类替代了此方法。这个被划去的方法仍然是可以正常使用的。(格式不支持删除线,此处代码贴图片)如下图:
运行结果:
Hi,baby
从结果看,@Deprecated不影响方法使用,只是一个提示。
2.@Override
1.告诉读代码的人,这是一个复写的方法
2.帮助自己检查是否正确的复写了父类中已有的方法告诉读代码的人,这是一个复写的方法。
创建一个父类:OverrideDemo
public class OverrideDemo {
public static void main(String[] args) {
OverrideDemo od = new OverrideDemo();
od.sayHello("baby");
}
private void sayHello(String name) {
System.out.println("Hello "+ name);
}
}
运行结果:
Hello baby
创建子类:OverrideDemoSon,并且复写父类中的sayHello()方法。
public class OverrideDemoSon extends OverrideDemo{
@Override
public void sayHello(String name) {
System.out.println("Hello ");
}
}
在我们手工复写父类的方法时,方法的参数容易记错,如果不加@Override的话,编辑器就不会提示你没有复写成功。如下图,我们将参数类型改为int:
如上图,sayHello()并不是重写了父类的sayHello()方法,但是编译器没有报错,一个隐藏的bug就这样诞生了。但是加上@Override的话如下图:
编译器就会提示你,必须重写父类的方法。说明我们复写方法失败。
3.@SuppressWarnings
用于通知java编译器忽略特定的编译警告。
如下图,编译器产生的警告对代码左侧行列的遮挡,有时候会影响我们断点调试时打的断点。
如果加上@SuppressWarnings,可以消除这些警告的产生如下图:
此注解的使用有三种类型:
1.抑制单类型的警告:@SuppressWarnings("unused");
2.抑制多类型的警告:@SuppressWarnings("unused","unchecked");
3.抑制所有类型的警告:@SuppressWarnings("all")
警告关键字见下图:
4.@FunctionalInterface
FunctionalInterface注解,在此做一下简单介绍:指定接口必须为函数式接口,如果编写的不是函数式接口,但是加上了@FunctionInterface,那么编译器会报错。“函数式接口”是指仅仅只包含一个抽象方法的接口;
5.@SafeVarargs
这个注解用来抑制堆污染警告,具体解释会在补充堆污染后,单独写一篇来解释@SafeVarargs注解。
联系我: