千字走进注解的领域 | 带你学《Java面向对象编程》之四十六

简介: 本节将为读者介绍常见的三个注解-@Override、@Deprecated和@SuppressWarnings的作用与用法。

上一篇:三分钟带你认识注解 | 带你学《Java面向对象编程》之四十五
【本节目标】
通过阅读本节内容,你将初步掌握编程过程中常见的三个注解的作用及使用方法,并能够通过各种注解简化、规范化自己的编程过程。

准确的覆写:@Override

当子类继承某一个父类之后,如果发现父类中的某些方法功能不足的时候往往会采用覆写的形式来对方法功能进行扩充,于是接下来首先来观察一种覆写操作。
范例:观察覆写的问题

class Channel {
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
}
class DatabaseChannel extends Channel {
    public void connect() {
        System.out.println(“子类定义的通道连接操作。”) ;
    }
}
public class JavaDemo{
   public static void main(String args[]) {
        new DatabaseChannel().connect() ;
   }
}

执行结果:子类定义的通道连接操作。
开发之中经常要出现的两个问题:

  • 虽然要明确的继承一个父类并且进行方法的覆写,但是有可能由于疏忽忘记编写extends,于是这个时候不是覆写。class DatabaseChannel extends Channel
  • 在进行方法覆写的时候单词写错了。public void connection() {}

此时即便单词写错了,实际上程序在编译的时候也不会出现任何的错误信息,因为它认为这是一个新的方法。所以在开发之中为了避免这种问题的出现,可以在明确覆写的方法上追加有一个注解。
范例:追加注解

class Channel {
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
}
class DatabaseChannel extends Channel {
    @override   //明确表示该方法是一个覆写来的方法
    public void connect() {
        System.out.println(“子类定义的通道连接操作。”) ;
    }
}
public class JavaDemo{
   public static void main(String args[]) {
        new DatabaseChannel().connect() ;
   }
}

该注解主要是帮助开发者在程序编译的时候可以检查出程序的错误。

过期操作:@Deprecated

所谓的过期操作指的是在一个软件项目的迭代开发过程之中,可能有某个方法或者是某个类,由于在最初设计的时候考虑不周(存在有缺陷),导致新版本的应用会有不适的地方(老版本不影响),这个时候又不可能直接删除掉这些操作,那么就希望给一个过渡的时间,于是就可以采用过期的声明,目的是告诉新的用户这些操作不要再用了,老的的用户用就用了。这样的方法就必须利用“@Deprecated”注解进行定义。
范例:声明过期操作

class Channel {
    @Deprecated           //老系统继续用,如果是新的就不要用了
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
    public String connection() {
        return “获取了Xxx通道连接信息:” ;
    }
}
public class JavaDemo{
   public static void main(String args[]) {
        new Channel().connect() ;
   }
}

image.png
图一 执行结果

在有一些开源项目中有些比较烦人的问题:新版本出现后,将里面的方法彻底变样。

压制警告:@SuppressWarnings

以之前的过期程序为例,可以发现在进行程序编译的时候会出现一个错误的提示信息:

image.png
图二 错误提示信息

如果此时不愿意见到这些提示信息(或者已经明确知道错误在哪里),那么就可以进行错误警告信息的压制:

class Channel {
    @Deprecated           //老系统继续用,如果是新的就不要用了
    public void connect () {
        System.out.println(“********** Channel ************”) ;
    }
    public String connection() {
        return “获取了Xxx通道连接信息:” ;
    }
}
public class JavaDemo{
   @SuppressWarnings ({“deprecation”})
   public static void main(String args[]) {
        new Channel().connect() ;
   }
}

它做的只是让警告信息不出现,不出现干扰而已。
想学习更多的Java的课程吗?从小白到大神,从入门到精通,更多精彩不容错过!免费为您提供更多的学习资源。
本内容视频来源于阿里云大学

下一篇:初识面向对象第三特征-多态 | 带你学《Java面向对象编程》之四十七
更多Java面向对象编程文章查看此处

相关文章
|
2月前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
80 7
|
20天前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
79 15
|
20天前
|
Java 数据安全/隐私保护 开发者
【潜意识Java】深入理解 Java 面向对象编程(OOP)
本文介绍了Java中的面向对象编程(OOP)核心概念,包括封装、继承、多态和抽象。封装通过访问控制保护数据,提高安全性;继承支持代码复用,减少冗余;多态实现灵活的行为调用;抽象则隐藏细节,简化接口设计。掌握这些概念有助于编写高效、灵活且易于维护的代码。文章通过实例详细讲解了每个概念在Java中的应用,并总结了它们的优势。
38 3
|
3月前
|
Java 开发者
Java 面向对象编程
总之,Java 的面向对象编程为开发者提供了一种有效的编程范式,帮助他们构建出高质量、可维护的软件系统。理解和掌握面向对象的概念和原则是成为优秀 Java 开发者的重要基础。
209 63
|
4月前
|
XML Java 编译器
Java学习十六—掌握注解:让编程更简单
Java 注解(Annotation)是一种特殊的语法结构,可以在代码中嵌入元数据。它们不直接影响代码的运行,但可以通过工具和框架提供额外的信息,帮助在编译、部署或运行时进行处理。
124 43
Java学习十六—掌握注解:让编程更简单
|
2月前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
118 5
|
3月前
|
Java 开发者 Spring
[Java]自定义注解
本文介绍了Java中的四个元注解(@Target、@Retention、@Documented、@Inherited)及其使用方法,并详细讲解了自定义注解的定义和使用细节。文章还提到了Spring框架中的@AliasFor注解,通过示例帮助读者更好地理解和应用这些注解。文中强调了注解的生命周期、继承性和文档化特性,适合初学者和进阶开发者参考。
99 14
|
3月前
|
Java 编译器
Java进阶之标准注解
Java进阶之标准注解
55 0
|
4月前
|
IDE Java 编译器
java的反射与注解
java的反射与注解
35 0
|
1月前
|
监控 Java
java异步判断线程池所有任务是否执行完
通过上述步骤,您可以在Java中实现异步判断线程池所有任务是否执行完毕。这种方法使用了 `CompletionService`来监控任务的完成情况,并通过一个独立线程异步检查所有任务的执行状态。这种设计不仅简洁高效,还能确保在大量任务处理时程序的稳定性和可维护性。希望本文能为您的开发工作提供实用的指导和帮助。
95 17