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

相关推荐
小成202303202656 小时前
Linux高级02
linux·开发语言
camellias_6 小时前
【无标题】
java·tomcat
知行合一。。。6 小时前
Python--04--数据容器(总结)
开发语言·python
咸鱼2.06 小时前
【java入门到放弃】需要背诵
java·开发语言
ZK_H6 小时前
嵌入式c语言——关键字其6
c语言·开发语言·计算机网络·面试·职场和发展
A.A呐6 小时前
【C++第二十九章】IO流
开发语言·c++
椰猫子6 小时前
Java:异常(exception)
java·开发语言
lifewange6 小时前
pytest-类中测试方法、多文件批量执行
开发语言·python·pytest
cmpxr_7 小时前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法
2401_827499997 小时前
python项目实战09-AI智能伴侣(ai_partner_5-6)
开发语言·python