8.4.1准确覆写
当子类继承某一个父类之后,如果发现父类中的某些功能不足,往往会采用覆写的形式来对方法功能进行扩充,此时为了可以在子类中明确描述某些方法是覆写而来的,就可以利用@Override注解标注。
范例:准确覆写
public class channel173 {
public void connt() {
System.out.println("父类建立连接");
}
}
public class channel173b extends channel173{
@Override
public void connt() {
System.out.println("子类建立连接");
}
}
public class channel173c {
public static void main(String[] args) {
new channel173b().connt();
}
}
执行结果
子类建立连接
本程序在子类覆写父类connt()方法时使用了@Override注解,这样在不清楚父类结构的时候,立刻分辨出那些是覆写方法,那些是子类扩充方法。同时利用@Override注解也可以在编译时检测出因为子类拼写错误所造成的覆写错误。
8.4.2过期声明
现在的软件开发已经不再是一次编写的过程了,几乎所的项目都会出现更新的过程,每一次更新都会涉及代码结构,性能与稳定性的提高,所以会经常出现某些程序结构不再适合新版本的情况。在这样背景下如果新版本中直接取消某些类或者某些方法也有可能造成部分稳定程序出错。为了解决此类问题,可以在新版本更新时对那些不再推荐使用的操作使用@Deprecated注解声明,这样在程序编译时如果发现使用了此类结果会提示警告信息。
范例:过期声明
public class channel17302 {
/**
* 连接通道此操作在新项目中不建议使用,建议使用connection()方法
*/
@Deprecated //[过期声明]不建议使用
public void connt() { //可能在其他操作中可能继续使用,不能删除
System.out.println("进行通道连接。。。");
}
public String connection(){
return "通道连接信息";
}
}
public class channel17302b {
public static void main(String[] args) {
new channel17302().connt();//编译时出现警告信息
}
}
本程序使用了@Deprecated注解,项目开发者在编写新版本程序代码的时候就可以清楚的知道此为过期操作,并且可以根据注解的描述更换使用方法。
注意:合理开发中不要使用@Deprecated注解定义的结构
为了保证项目长期的可维护性,某些类或者方法上出现@Deprecated注解时一定会有提示文字告诉开发者替代类是哪一个,这些信息都可以通过Doc文档获得。
8.4.3压制警告
为了代码的严格性,往往会在编译时给出一些错误的提示信息(非致命错误),但是有些错误信息并不是必要的。为了防止这些提示信息的出现,java提供了@SuppressWarning注解来进行警告信息的压制,在此注解中可以通过value属性设置要压制的警告类型,而value可设置的警告信息如表所示。
@SuppressWarning的警告信息
关键字 | 描述 |
---|---|
deprecation | 使用了不赞成使用的类或方法时的警告 |
unchecked | 执行了未检查的转换时警告。例如,泛型操作中没有指定泛型类型 |
fallthrough | 当switch程序块直接执行下一种情况而没有break语句是时的警告 |
path | 在类路径、源文件路径等有不存在的路径时的警告 |
serial | 当在可序化的类上serialVersionUID定义时的警告 |
finally | 任何finally子句不能正常完成时的警告 |
all | 关于以上所有情况的警告 |
范例:压制警告信号
public class channel17302 {
/**
* 连接通道此操作在新项目中不建议使用,建议使用connection()方法
*/
@Deprecated //[过期声明]不建议使用
public void connt() { //可能在其他操作中可能继续使用,不能删除
System.out.println("进行通道连接。。。");
}
public String connection(){
return "通道连接信息";
}
}
public class channel17302b {
@SuppressWarnings(value= {"deprecation"}) //警告信号将被压制
public static void main(String[] args) {
new channel17302().connt();//编译时出现警告信息
}
}
由于程序使用了过期操作,这样在程序编译时一定会出现警告信息,此时就可以利用 @SuppressWarnings阻止在编译时提示警告信息。
提示:不需要去记住可以压制的警告信息。