news 2026/7/16 13:50:29

《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/7/13 19:24:03

根据您提供的 package.json 片段,涉及的 @vue/cli-plugin-babel 和 @vue/cli-service 版本为 ~4.2.0。以下是针对该版本的详细解决方案,结合相关依

根据您提供的 package.json 片段,涉及的 vue/cli-plugin-babel 和 vue/cli-service 版本为 ~4.2.0。以下是针对该版本的详细解决方案,结合相关依赖冲突问题:1. ‌核心依赖冲突处理‌‌问题‌:vue/cli-plugin-babel 和 vue/cli-ser…

作者头像 李华
网站建设 2026/7/13 19:24:02

electron-egg打包win7

node版本 v16.17.1 项目依赖版本"devDependencies": {"electron/rebuild": "^3.2.5","types/node": "16.18.88","debug": "^4.4.0","ee-bin": "^4.1.10","electron": &q…

作者头像 李华
网站建设 2026/7/15 8:00:18

8种网络故障分析及测试命令大全

对于网络工程师来说,在平常工作中,最基础的工作能力就是要保证网络顺畅不出错误。但实际上,网络随时都可能发生故障,影响正常工作,从而导致网络工程师总是要背很多黑锅;所以快速解决网络故障已经成为网工的…

作者头像 李华
网站建设 2026/7/15 12:46:14

Pythonselenium自动化测试实战项目

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快说明:本项目采用流程控制思想,未引用unittest&pytest等单元测试框架一、项目介绍目的测试某官方网站登录功能模块可以正常使用用例1.输入…

作者头像 李华