Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类和文件的名称相同,为什么?_Java - Fatal编程技术网

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

Java 类和文件的名称相同,为什么?,java,Java,为什么我们必须保存一个与公共类的类名相同的文件 public class Indian{ public static void main (String args []){ System.out.println ("i am a programmer"); } } 这个类必须以名称Indian保存。为什么会这样,这是一个约定???因为它是Java编译器强加的约束。为什么会这样?为了秩序,很简单。想象一个有300个类的大型项目,所有这些类都包含具有不同名

为什么我们必须保存一个与公共类的类名相同的文件

public class Indian{ 
     public static void main (String args []){
          System.out.println ("i am a programmer");
     }
}

这个类必须以名称Indian保存。为什么会这样,这是一个约定???

因为它是Java编译器强加的约束。为什么会这样?为了秩序,很简单。想象一个有300个类的大型项目,所有这些类都包含具有不同名称的类

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

这样,Java编译器就可以在不检查文件夹中所有Java文件的情况下找到类


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

查看这篇文章:如果是为了方便用户,那么编译器就不能给出错误……但它这样做了,这意味着这不是一种实践,而是由编译器强制执行的……它有什么技术逻辑吗?只是想说明300对于类的数量来说并不是那么大。想想大型项目有数千个类的项目。当然,如果这个简单的规则不适用的话,300个已经足够让你完全困惑了;)