类名和文件名相同,为什么?

4
为什么我们必须使用与公共类的类名相同的名称保存文件?
public class Indian{ 
     public static void main (String args []){
          System.out.println ("i am a programmer");
     }
}

这个类必须以Indian命名保存。为什么这样做?这是一个惯例吗?

请查看这篇文章:https://dev59.com/2mkv5IYBdhLWcg3wqSf1 - hmir
如果这是为了用户方便,那么编译器就不应该报错...但它确实会报错,这意味着这不是一种惯例,而是编译器强制要求的...这背后是否有任何技术逻辑? - utkarsh
2个回答

5

这是由Java编译器强制执行的限制。为什么呢?为了保持顺序。想象一下一个包含300个类的大型项目,其中所有类都包含不同名称的类。


只是想评论一下,300并不是所有类的数量都很大。想象一下大型项目中有数千个类的情况。 - Sandy Chapman
当然可以,但是如果那个简单的规则不适用的话,300已经足够让你完全困惑了 ;) - Michał Szydłowski

2

首先,这仅适用于公共类;包私有类可以放在任何名称的文件中。对于公共类,这是一种约定,与将文件放置在镜像您软件包结构的目录中以及使用.java扩展名的方式相同。

这样做是为了Java编译器可以在不检查文件夹中所有Java文件的情况下找到类。

请注意,这个约定不需要是普遍的:Java提供了一个标准,可供任何人实现,因此可以构建一个系统,其中Java源文件被放置在数据库或云中,而不是常规文件系统中。这个Java实现的开发人员理论上可以提出完全不同的约定,或者根本不使用任何约定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接