news 2026/5/1 8:07:53

《Effective Java》第25条:限制源文件为单个顶级类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
《Effective Java》第25条:限制源文件为单个顶级类

说明:

关于本博客使用的书籍,源代码Gitee仓库 和 其他的相关问题,请查看本专栏置顶文章:《Effective Java》第0条:写在前面,用一年时间来深度解读《Effective Java》这本书

正文:

Java允许我们在一个Java文件中,定义多个顶级类,并且可以正常编译和使用,但是这种方式是没有任何好处的,只会带来巨大的风险。

如书上举的例子:

正常情况下,在Utensil.java 源文件中定义 Utensil类 、在 Dessert.java 源文件中定义 Dessert类。是完全没有问题的。这也是我们经常做的。

当在 Utensil.java 源文件中定义 Utensil类 和 Dessert类,程序不会报错,执行也没问题

但是当再从 Dessert.java 源文件中定义 Utensil类 和 Dessert类,在idea中,程序就会编译出错,编译器会提醒你定义了多个Utensil 和Dessert类。

书中提到的使用命令符的 javac 命令,这里不再演示,也没有必要。

如果我们有在一个源文件中定义多个类的需求,那么最好的方式就是考虑使用静态成员类(详见第24条)。

总结:

原文P92:永远不要把多个顶级类或者接口放在一个源文件中。遵循这个规则可以确保编译时一个类不会有多个定义。这么做反过来也能确保编译产生的类文件,以及程序结果的行为,但会受到源文件被传给编译器时的顺序的影响。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 12:57:18

Node.js 编程实战:数据库连接池与性能优化

在 Node.js 后端开发中,数据库性能往往决定了整个系统的吞吐能力和稳定性。很多性能问题并不来自业务逻辑本身,而是由于数据库连接管理不当造成的。合理使用数据库连接池,并结合针对性的优化策略,是构建高性能 Node.js 应用的关键…

作者头像 李华
网站建设 2026/4/18 22:20:26

【回顾React的一些小细节】render里不可包含的东西

在 React 的 render()(或函数组件的渲染路径)中 不应包含副作用(Side effects): 如网络请求、订阅、定时器、I/O、路由跳转等。 为什么:render 应是纯函数,副作用会在每次渲染重复执行或引发循环。替代&…

作者头像 李华
网站建设 2026/4/16 23:15:51

文生中英双语的AI视频工具怎么选?一个英语老师的实测结论

如果你是英语老师,正在找文生中英双语的AI视频工具,那我几乎可以确定—— 你遇到的问题,和我一模一样。不是不会讲英语,也不是不会设计内容,而是:双语视频根本做不完。在我正式给结论之前,先把最…

作者头像 李华
网站建设 2026/5/1 7:30:43

PostgreSQL_note2025

SELECT pg_get_functiondef(p.oid) AS ddl_definition FROM pg_proc p JOIN pg_namespace n ON p.pronamespace n.oid WHERE n.nspname ‘ods’ – 模式名 AND p.proname ‘xxxxxxxx’; – 存储过程名 –表信息 select c.relname table_name, nsp.nspn…

作者头像 李华
网站建设 2026/4/29 0:52:47

鸿蒙Electron应用性能优化与稳定性保障:从流畅运行到可靠服务

结合前文对开发、UX优化及商业化评估的全面覆盖,本次将聚焦鸿蒙Electron应用的“性能优化与稳定性保障”,从“性能瓶颈定位、核心优化方案、稳定性监控体系”三个维度,提供可落地的性能调优策略与稳定性保障方案,解决Electron应用…

作者头像 李华
网站建设 2026/4/26 23:05:33

35岁大龄程序员破局指南:突破“中年危机”魔咒,开启职业第二春!

“35岁危机”曾是悬在程序员头顶的达摩克利斯之剑,但在技术快速迭代的今天,这条年龄线甚至被提前到了30岁。根据某一线互联网公司内部数据,35岁以上程序员主动离职率比30岁以下高出40% ,而再就业周期平均延长3-6个月。 这不仅是年…

作者头像 李华