天天看点

Java基本注解分析,为什么要使用@Override@Override@Deprecated@SuppressWarnings

标注在子类方法中,表示此方法是覆盖父类的重载方法,具有强制性,即如果父类没有此方法,则会编译出错。那它到底有什么用呢?让我们来看这一需求场景:

假如我们利用面向对象的多态特性特性编程,有子类sa,sb继承自父类s.我们需要在子类sa,sb各自拓展父类s的speak方法,然后根据业务逻辑,通过a的引用来调用sa,sb的重载方法speak。示例代码如下所示:

这里是我们业务中,想要的结果,但如果我们不小心把咱们的sb类中的speak方法写错成了spek,或将传入参数类型、数量写错等(即不能成功重载),如下所示:

但如果我们在sb的speak方法上添加注解@override,则会出现编译异常如:the method speak(int) of type sb must override or implement a supertype method

从上面我们能够看到,对子类的重载标注@override是良好的编程习惯,否则在大规模的项目中,我们万一不小心出现这种细节错误,可能会为后期排错带来巨大障碍。

除了override,还有另外两种最基本的注解:

它用来标示某个类或其方法、变量等已过期,如果我们在其他类中调用标注了@deprecated的类或方法变量,将会引起编译器的警告

它用于取消编译器的警告,标注了此注解的元素会有向下传递的效果,比如在类级别标注了注解,则在该类的所有方法中也会取消同类的编译器警告。