靠谱的程序员推荐阅读-----《阿里Java开发手册》【强制】所有的覆写方法,必须加@Override注解

news/2025/9/24 12:49:58/文章来源:https://www.cnblogs.com/buguge/p/19108191

靠谱的程序员推荐阅读----->《阿里Java开发手册》【强制】所有的覆写方法,必须加@Override注解

《阿里巴巴Java开发手册》编程规约->OOP规约 其中有一条,强制要求所有覆写方法添加 @Override 注解。

《阿里巴巴Java开发手册》编程规约->OOP规约

这是一项非常重要的编码规范。它主要有以下几个核心目的和好处:

📌 1. 编译时检查覆写是否正确

@Override 注解会让编译器检查该方法是否确实成功覆写了父类(或接口)中的方法。如果方法签名与父类方法不一致(例如,方法名拼写错误、参数类型或数量不匹配、返回值类型不兼容等),编译器会立即报错,防止潜在的运行时错误 。

  • 经典案例getObject()(字母O)与 get0bject()(数字0)的问题。肉眼难以分辨,但加上 @Override 后,如果拼写错误导致并未成功覆写,编译器就会提示错误,从而避免误以为覆写成功而实际调用了父类方法的情况 。

🔍 2. 增强代码可读性和可维护性

当其他开发者阅读代码时,@Override 注解提供了一个清晰的视觉信号,表明“这是一个覆写自父类或接口的方法”,而不是一个子类自行定义的新方法。这有助于快速理解类的层次结构和设计意图 。

⚡ 3. 应对父类或接口的变更

当父类(尤其是抽象类)或接口的方法签名发生修改时(例如,方法名更改、参数调整),所有加了 @Override 注解的实现类方法会立即编译报错。这迫使开发者必须同步检查并更新实现逻辑,确保了代码在重构过程中的一致性和安全性,避免了“方法找不到”或行为不一致的运行时异常(如 NoSuchMethodError)。

⚠️ 4. 覆写方法的基本规则

在使用 @Override 注解时,也需遵循Java语言本身的覆写规则 :

  • 方法名、参数列表必须完全相同
  • 返回值类型:子类方法的返回值类型必须与父类方法相同或是其子类型(协变返回类型)。
  • 访问权限:子类方法的访问权限不能比父类方法更严格(即不能缩小访问范围)。例如,父类方法是 protected,子类覆写时可以是 protectedpublic,但不能是 private 或默认(包级)权限。
  • 异常:子类方法抛出的受检异常不能比父类方法抛出的更通用。
  • 无法覆写的情况:无法覆写被 privatestaticfinal 修饰的方法。

💎 总结

为所有覆写方法添加 @Override 注解,是一个低成本、高回报的最佳实践。它充分利用编译器的静态检查能力,在开发阶段早期就能发现因拼写错误或签名不匹配导致的问题,极大提升了代码的健壮性和可维护性,是团队协作和代码质量保障中非常重要的一环。

【附】《阿里巴巴Java开发手册》主要版本时间线

《阿里巴巴Java开发手册》是阿里巴巴集团技术团队与社区开发者共同智慧的结晶,旨在提升代码质量、协作效率和系统稳定性。它涵盖了编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约等多个维度。(获取最新版本的手册,可关注阿里巴巴的官方技术社区或发布渠道(如阿里云云效平台、GitHub仓库 alibaba/p3c)。许多技术社区也会不定期分享相关资源。)

版本号 版本名称 发布日期 主要更新与特点
- 试读版 2016年12月07日 首次对外发布试读版本。
1.0.0 公开版 2016年12月 首个公开版本。
1.1.0 正式版 2017年02月09日 阿里巴巴集团正式对外发布。
1.3.0 终极版 2017年09月25日 增加单元测试规约,并发布了阿里开源的IDE代码规约检测插件。
1.4.0 详尽版 2018年05月20日 增加设计规约大类,共16条。
1.5.0 华山版 2019年06月19日 移除了“阿里巴巴”限定词,强调是社区开发者集体智慧的结晶。新增21条新规约,修改描述112处。
1.6.0 泰山版 2020年04月22日 发布错误码统一解决方案,新增34条新规约(如日期闰年闰月、三目运算拆箱、SQL表别名限定等),修改描述90处。
1.7.0 嵩山版 2020年08月03日 新增前后端规约14条,新增禁止歧视性用语等约定,修正了BigDecimal比较、HashMap扩容等描述。
1.7.1 黄山版 2022年02月 新增11条新规约,如浮点数后缀大写、枚举属性字段私有不可变、配置文件密码加密等。修正了嵩山版中的部分代码格式和描述错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915717.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

杆状病毒表达系统为何成为蛋白表达首选

杆状病毒表达系统为何成为蛋白表达首选在现代生命科学、疫苗开发、生物医药以及结构生物学等领域,获取足够量、正确折叠、具有生物活性并带有适当后翻译修饰(post-translational modifications, PTMs)的蛋白,是许多…

日记3

卡壳在ArrayList和LinkedList的区别上,查资料+写测试代码后才理清:前者查数据快(像数组翻书),后者增删快(像串珠子)。 还练了道集合遍历题,用增强for循环时少写冒号报了错,调试后才想起语法格式。最后整理了两…

Gitee如何重塑中国开发者的代码托管体验

Gitee如何重塑中国开发者的代码托管体验 在数字化转型浪潮席卷全球的今天,代码托管平台作为开发者生态的基础设施,其重要性日益凸显。作为国内领先的代码托管服务提供商,Gitee凭借其本地化创新优势,正在重新定义中…

模块化面向对象 2章

1 抽象的目的是通过把相关的属性和其他不相关的属性分开,分离关注点 2 在面向对象设计中,普遍采用的包括描述程序静态结构的类图、描述程序动态行为的活动图。他们掩藏了类中方法的实现细节,凸出来类的组成和类之间…

完整教程:ArcGIS JSAPI 高级教程 - ArcGIS Maps SDK for JavaScript - 自定义(GLSL)修改高亮图层样式

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

css `isolation: isolate` - 详解

css `isolation: isolate` - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&q…

南昌网站建设一般多少钱一年视差效果网站

Java NIO 一,介绍 Java NIO(New IO)是 JDK 1.4 引入的一组新的 I/O API,用于支持非阻塞式 I/O 操作。相比传统的 Java IO API,NIO 提供了更快、更灵活的 I/O 操作方式,可以用于构建高性能网络应用程序。 …

建设一个网站需要多久文创产品设计流程

【vue在主页中点击主页面跳转到某个页面的操作完整过程】 1.首先在主页面中加入一个卡槽用于展示弹出的窗口 代码如下&#xff1a; <el-dialog :visible.sync"dialogVisible1" :close-on-click-modal"false" :title"title" class"dial…

Debezium + Kafka + Flink/Doris Stream Load 实时数仓

通过 Debezium 捕获 Oracle 的 CDC(Change Data Capture)日志,经 Kafka 缓冲,再通过 Flink 或直接调用 Doris 的 Stream Load 接口写入 Doris。1、Oracle CDC 捕获: Debezium(基于 LogMiner 或 XStream)解析 Or…

实用指南:【Makefile】Linux内核模块编译

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

er图关于网站建设允许个人做动漫网站吗

1&#xff1a;音频信息数据量计算 已知采样频率&#xff08;单位KHz&#xff09;、量化位数、声道数及持续时间&#xff08;单位分钟&#xff09;&#xff0c;求未压缩时的数据量&#xff08;单位MB&#xff09;. 例如&#xff1a; 输入&#xff1a; 22.05 16 2 3 &#xff…

Gitee DevOps平台:中国企业数字化转型的代码管理新范式

Gitee DevOps平台:中国企业数字化转型的代码管理新范式 随着中国科技产业的蓬勃发展,国产代码托管平台Gitee正凭借其深度本土化能力和全栈式DevOps解决方案,成为企业研发数字化转型的重要推手。该平台不仅提供了与国…

Ansible + Docker 部署 Zookeeper 集群

Ansible + Docker 部署 Zookeeper 集群1. 服务器和集群信息 1.1 主机列表IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构 已安装软件10.0.0.13 arc-pro-dc01 my.registry.com 8 1 500GB CentOS 7.9.2009 x86_…

幂运算与航班中转的奇妙旅行:探索算法世界的两极 - 实践

幂运算与航班中转的奇妙旅行:探索算法世界的两极 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

Gemini CLI 配置问题

我是 Windows 环境,代理和CLI 配置完成,终端输入 gemini,可以正常进入,但是提问是,显示报错信息: [API Error: exception TypeError: fetch failed sending request]后来发现是power shell需要做以下设置,敲入…

本土化与全球化博弈下的项目管理工具选型:Gitee如何为中国企业破局?

本土化与全球化博弈下的项目管理工具选型:Gitee如何为中国企业破局? 在数字化转型浪潮席卷全球的当下,项目管理工具市场正迎来爆发式增长。国际数据公司(IDC)最新报告显示,2023年全球项目管理软件市场规模预计突…

论Linux安装后需要进行的配置

先别急,容我吃个饭再说。文章中涉及的敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打码处理。传播、利用本文章所提供的信息而造成的任何直接或者间…

购物网站开发的背景与意义手机网站和网站一体

最近搞图片上传&#xff0c;折腾了一个星期终于做出来了&#xff0c;网上搜出来的方法几乎都是好几年前的&#xff0c;试了好多都不能用&#xff0c;此次把代码公布出来供大家参考。注&#xff1a;部分代码是后台写的&#xff0c;此方法没用到第三方库。1.图片保存到本地同时上…

网站被采集了 一个栏目不收录软件学校网站模板下载

parent.location.reload(); window.opener.location.hrefwindow.opener.location.href; 转载于:https://www.cnblogs.com/xbding/archive/2012/07/03/2574660.html

完整教程:嵌入式数据结构笔记七——二叉树

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …