为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Java中的文件名与公共类名相同?

为什么Java中的文件名与公共类名相同?

江户川乱折腾 2019-07-03 10:07:10
为什么Java中的文件名与公共类名相同?在Java中,文件名应该与public class包含在那个文件里。为何这是一个限制?它有什么用途?
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

Java有一种有趣的方法:给程序员一个选择只能降低编程体验,删除选择。

他们在很多地方都这样做。文件名和包是确定的,但也不允许一个文件中的多个公共类(永远不会好),也不允许您在文件之间拆分类(该死很难使用!)等等。

我真希望他们能走得更远。没有理由使用公共变量:我从来不需要一个变量,也从未见过某个聪明的程序员认为需要一个并且实际上是正确的情况。

我也不介意看到方法/类大小的限制,但这可能会变得粗略(它可以很容易地通过代码检查器实现,问题是最需要帮助的公司通常是那些不知道自己需要帮助的公司,因此不使用代码检查器之类的工具)。

对于大多数小团队来说,这并不重要,但当你的团队成长起来,并拥有来自印度、中国和世界各地不同地方的顾问的多个网站时,你就会开始体会到不灵活的一面。


针对setters/getters的评论:

Javabean是Borland创建的一个令人厌恶的东西,用来破解它们的GUI,然后再改造成Java。

可怕的想法-从OO编程中分散注意力-getter和setter A)显示了太多的实现,而B)让您思考如何操作来自另一个对象的数据,而不是要求其他对象为您执行操作。对那些还不能思考的人来说是个坏主意。

偶尔需要使用getter,但除非被认为是绝对不可避免的,否则不应该添加。

应不惜一切代价避免设置人。如果您绝对需要在构造对象之后外部修改状态,请尝试使用构建器模式,并在执行任何操作后保护您的setter不被调用。

显然,每件事都有例外,许多“getter”实际上是关键的对象业务逻辑,比如String.ength(),无论字符串是如何实现的,它都是必需的,甚至不通过返回属性来实现-如果您想称之为“getter”,这是一个很好的例子。


查看完整回答
反对 回复 2019-07-03
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我正要说,这只是一个..但我看了看JLS也没有那么严格。从JLS的角度来看,由编译器来选择是否设置这样的限制。

实际上,普通编译器确实有这种限制,而且,正如其他已经解释过的那样,编译器更容易找到编译单元,而类加载器则更容易找到具有这种限制的类文件。


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 715 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号