Я думаю, что я не понимаю структуру пакета 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
из базового каталога, чтобы запустить его.
Почему компилятор не смог бы вывести имя пакета, просмотрев структуру каталогов? Например, если я скомпилировал файл из базового каталога javac com\example\MyClass.java
, я не понимаю, почему MyClass.java не будет подразумевать принадлежность к пакету com.example
.
Я понимаю, что есть пакет по умолчанию, но все же кажется, что объявление пакета в исходном файле является избыточной информацией?