buguge - Keep it simple,stupid

知识就是力量,但更重要的,是运用知识的能力why buguge?

导航

靠谱的程序员推荐阅读----->《阿里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条新规约,如浮点数后缀大写、枚举属性字段私有不可变、配置文件密码加密等。修正了嵩山版中的部分代码格式和描述错误。

posted on 2025-09-24 12:48  buguge  阅读(119)  评论(0)    收藏  举报