当前位置: 首页 > 面试题库 >

为什么每个公共类都放在单独的文件中?

薛弘厚
2023-03-14
问题内容

我最近开始学习Java,发现每个Java类都必须在单独的文件中声明非常奇怪。我是C#程序员,C#并没有实施任何此类限制。

Java为什么要这样做?有设计上的考虑吗?

编辑(基于几个答案):

为什么在IDE时代Java现在不取消此限制?这不会破坏任何现有代码(或者会破坏吗?)。


问题答案:

根据Java语言规范,第三版:

这种限制意味着每个编译单元最多只能有一个这样的类型。 这种限制使Java编程语言的编译器或Java虚拟机的实现易于在包中查找命名类 ;
例如,可以在目录wet /
sprocket的Toad.java文件中找到公共类型wet.sprocket.Toad的源代码,并在同一目录的Toad.class文件中找到相应的目标代码。

重点是我的。

似乎基本上他们希望将OS的目录分隔符转换为命名空间的点,反之亦然。

是的,这是某种设计上的考虑。



 类似资料:
  • 问题内容: 为什么B类无法公开?如何在其他班级使用班级?在Cons中定义它更好吗? 问题答案: 根据Java语言规范,文件(.java)中只能有一个公共类,并且文件名应与公共类名相同。 如果希望在其他地方访问B类,则可以创建一个单独的B.java文件,然后将B类代码移至该文件。 该线程可以为您提供更多信息。

  • 问题内容: 在Java中,文件名应与该文件中包含的文件名相同。为什么会有限制?它有什么作用? 问题答案: Java有一个有趣的方法:给程序员一个选择只能降低编程经验,而不必选择。 他们在很多地方都这样做。确保使用文件名和软件包,但不允许在文件中使用多个公共类(从来没有),不允许您在文件之间拆分类(该死,很难使用!),等等。 我真的希望他们走得更远。没有理由使用公共变量:我从来不需要一个变量,也从未

  • 我来到阿克罗斯,问了一个问题:为什么Java文件中只有一个公共类 答案是这样的: 要了解这些限制背后的基本原因,让我们假设编译器不会因为将文件名命名为与公共类名相同而导致编译错误。 假设有一个包a 文件1.java 现在我们知道,公共类也可以在包之外访问,现在让外部世界访问它将成为开发人员的责任。让我们看看如何: 假设包A只包含Java文件(没有类文件),包A之外的某个类尝试访问公共类file3,

  • 一般来说,这样一种继承形式(增加某些方法的可见性是唯一的改变)是一种众所周知的实践吗?它可能有用的一些场景是什么(假设我们可以访问所有的代码)?

  • 我正在使用以下Robocopy命令: 问题是它一直在复制*EXTRA file下列出的某些文件,但该文件已在目标中。 我只希望robocopy复制一个更新版本的文件(创建日期不同) 仅当测试文件。zip的创建日期较新。 为了解决这个问题,我尝试使用/xo表示排除旧文件。没有运气。每当我每分钟执行一次脚本时,都会发生这种情况。

  • 问题内容: 好的,这可能是java中的小问题。我们不能在一个文件中定义两个公共类。但是,在《 SCJP学习指南》一书的示例中,提到了以下示例: 当我将其复制粘贴到netbeans中时,立即引发了编译错误,该公共类A应该在单独的文件中提及。SCJP stdydy指南中的示例真的错误吗?同样在一些模拟测试中,我发现许多问题都具有这种模式,但是在所有选项中都没有提到编译器错误。在这里担心 问题答案: 是