为什么 java 源文件需要包声明?
我认为我无法理解java包结构,对我来说,java文件在其中有一个包声明似乎是多余的,然后还需要出现在与包名称匹配的目录中。例如,如果我有一个文件:MyClass.java
package com.example;
public class MyClass {
public static void main(String[] args) {
System.out.println("Hello, World");
}
}
然后,我将被要求将此文件位于 相对于基目录的 中,并且我将从基目录执行以运行它。com/example
java com.example.MyClass
为什么编译器不能通过查看目录结构来推断包名称?例如,如果我从基目录编译文件,我不明白为什么MyClass.java不会隐式属于包。javac com\example\MyClass.java
com.example
我知道有一个默认的包,但似乎源文件中的包声明是多余的信息吗?