靠谱的程序员推荐阅读----->《阿里Java开发手册》【强制】所有的覆写方法,必须加@Override注解
<p>《阿里巴巴Java开发手册》编程规约->OOP规约 其中有一条,强制要求所有覆写方法添加 <code>@Override</code> 注解。</p><p><img src="https://img2024.cnblogs.com/blog/202192/202509/202192-20250923214126240-537715309.png" alt="《阿里巴巴Java开发手册》编程规约->OOP规约" loading="lazy"></p>
<p>这是一项非常重要的编码规范。它主要有以下几个核心目的和好处:</p>
<h3 id="-1-编译时检查覆写是否正确">📌 1. <strong>编译时检查覆写是否正确</strong></h3>
<p><code>@Override</code> 注解会让编译器检查该方法是否确实成功覆写了父类(或接口)中的方法。如果方法签名与父类方法不一致(例如,方法名拼写错误、参数类型或数量不匹配、返回值类型不兼容等),<strong>编译器会立即报错</strong>,防止潜在的运行时错误 。</p>
<ul>
<li><strong>经典案例</strong>:<code>getObject()</code>(字母O)与 <code>get0bject()</code>(数字0)的问题。肉眼难以分辨,但加上 <code>@Override</code> 后,如果拼写错误导致并未成功覆写,编译器就会提示错误,从而避免误以为覆写成功而实际调用了父类方法的情况 。</li>
</ul>
<h3 id="-2-增强代码可读性和可维护性">🔍 2. <strong>增强代码可读性和可维护性</strong></h3>
<p>当其他开发者阅读代码时,<code>@Override</code> 注解提供了一个清晰的视觉信号,表明“<strong>这是一个覆写自父类或接口的方法</strong>”,而不是一个子类自行定义的新方法。这有助于快速理解类的层次结构和设计意图 。</p>
<h3 id="-3-应对父类或接口的变更">⚡ 3. <strong>应对父类或接口的变更</strong></h3>
<p>当父类(尤其是抽象类)或接口的方法签名发生修改时(例如,方法名更改、参数调整),所有加了 <code>@Override</code> 注解的实现类方法会<strong>立即编译报错</strong>。这迫使开发者必须同步检查并更新实现逻辑,确保了代码在重构过程中的一致性和安全性,避免了“方法找不到”或行为不一致的运行时异常(如 <code>NoSuchMethodError</code>)。</p>
<h3 id="️-4-覆写方法的基本规则">⚠️ 4. <strong>覆写方法的基本规则</strong></h3>
<p>在使用 <code>@Override</code> 注解时,也需遵循Java语言本身的覆写规则 :</p>
<ul>
<li><strong>方法名、参数列表必须完全相同</strong>。</li>
<li><strong>返回值类型</strong>:子类方法的返回值类型必须与父类方法相同或是其子类型(协变返回类型)。</li>
<li><strong>访问权限</strong>:子类方法的访问权限不能比父类方法更严格(即不能缩小访问范围)。例如,父类方法是 <code>protected</code>,子类覆写时可以是 <code>protected</code> 或 <code>public</code>,但不能是 <code>private</code> 或默认(包级)权限。</li>
<li><strong>异常</strong>:子类方法抛出的受检异常不能比父类方法抛出的更通用。</li>
<li><strong>无法覆写的情况</strong>:无法覆写被 <code>private</code>、<code>static</code> 或 <code>final</code> 修饰的方法。</li>
</ul>
<h3 id="-总结">💎 总结</h3>
<p>为所有覆写方法添加 <code>@Override</code> 注解,是一个<strong>低成本、高回报</strong>的最佳实践。它充分利用编译器的静态检查能力,在开发阶段早期就能发现因拼写错误或签名不匹配导致的问题,极大提升了代码的健壮性和可维护性,是团队协作和代码质量保障中非常重要的一环。</p>
<p><br><br></p>
<h3 id="附阿里巴巴java开发手册主要版本时间线">【附】《阿里巴巴Java开发手册》主要版本时间线</h3>
<p>《阿里巴巴Java开发手册》是阿里巴巴集团技术团队与社区开发者共同智慧的结晶,旨在提升代码质量、协作效率和系统稳定性。它涵盖了<strong>编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约</strong>等多个维度。(获取最新版本的手册,可关注阿里巴巴的官方技术社区或发布渠道(如阿里云云效平台、GitHub仓库 alibaba/p3c)。许多技术社区也会不定期分享相关资源。)</p>
<table>
<thead>
<tr>
<th style="text-align: left"><strong>版本号</strong></th>
<th style="text-align: left"><strong>版本名称</strong></th>
<th style="text-align: left"><strong>发布日期</strong></th>
<th style="text-align: left"><strong>主要更新与特点</strong></th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left">-</td>
<td style="text-align: left">试读版</td>
<td style="text-align: left">2016年12月07日</td>
<td style="text-align: left">首次对外发布试读版本。</td>
</tr>
<tr>
<td style="text-align: left">1.0.0</td>
<td style="text-align: left">公开版</td>
<td style="text-align: left">2016年12月</td>
<td style="text-align: left">首个公开版本。</td>
</tr>
<tr>
<td style="text-align: left">1.1.0</td>
<td style="text-align: left">正式版</td>
<td style="text-align: left">2017年02月09日</td>
<td style="text-align: left">阿里巴巴集团正式对外发布。</td>
</tr>
<tr>
<td style="text-align: left">1.3.0</td>
<td style="text-align: left">终极版</td>
<td style="text-align: left">2017年09月25日</td>
<td style="text-align: left"><strong>增加单元测试规约</strong>,并发布了阿里开源的IDE代码规约检测插件。</td>
</tr>
<tr>
<td style="text-align: left">1.4.0</td>
<td style="text-align: left">详尽版</td>
<td style="text-align: left">2018年05月20日</td>
<td style="text-align: left"><strong>增加设计规约大类</strong>,共16条。</td>
</tr>
<tr>
<td style="text-align: left">1.5.0</td>
<td style="text-align: left">华山版</td>
<td style="text-align: left">2019年06月19日</td>
<td style="text-align: left">移除了“阿里巴巴”限定词,强调是社区开发者集体智慧的结晶。<strong>新增21条新规约</strong>,修改描述112处。</td>
</tr>
<tr>
<td style="text-align: left">1.6.0</td>
<td style="text-align: left">泰山版</td>
<td style="text-align: left">2020年04月22日</td>
<td style="text-align: left"><strong>发布错误码统一解决方案,新增34条新规约</strong>(如日期闰年闰月、三目运算拆箱、SQL表别名限定等),修改描述90处。</td>
</tr>
<tr>
<td style="text-align: left">1.7.0</td>
<td style="text-align: left">嵩山版</td>
<td style="text-align: left">2020年08月03日</td>
<td style="text-align: left"><strong>新增前后端规约14条</strong>,新增禁止歧视性用语等约定,修正了BigDecimal比较、HashMap扩容等描述。</td>
</tr>
<tr>
<td style="text-align: left"><strong>1.7.1</strong></td>
<td style="text-align: left"><strong>黄山版</strong></td>
<td style="text-align: left"><strong>2022年02月</strong></td>
<td style="text-align: left"><strong>新增11条新规约</strong>,如浮点数后缀大写、枚举属性字段私有不可变、配置文件密码加密等。修正了嵩山版中的部分代码格式和描述错误。</td>
</tr>
</tbody>
</table>
<br>
</div>
<div id="MySignature" role="contentinfo">
<hr class="signhr"><p style="text-indent:2em;font-size:12px;text-align:center">当看到一些不好的代码时,会发现我还算优秀;当看到优秀的代码时,也才意识到持续学习的重要!--buguge<br>本文来自博客园,转载请注明原文链接:https://www.cnblogs.com/buguge/p/19108191</p><hr class="signhr">
<style>hr.signhr{width:80%;margin:0 auto;border: 0;height: 4px;background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.75), rgba(0, 0, 0, 0))}</style><br><br>
来源:https://www.cnblogs.com/buguge/p/19108191
頁:
[1]