Во-первых, я не парень Java, но я столкнулся с тем, что появляется на поверхности, чтобы быть несогласованностью с тем, как работают импорт.реализация импорта
Скажет у вас есть файл, и в этом файле у вас есть основные функции, и вы также определили класс Foo, теперь другую реализацию Foo также существует в пакете. Предположим, вы хотите использовать обе версии в своей функциональности.
Вы не можете явно импортировать Foo из своего пакета, то есть import mypackage.Foo;
Так как это приведет к конфликту с классом, определенным локально в файле, поэтому при компиляции создается ошибка.
Что вы можете сделать импорт всей упаковки, то есть импорт mypackage. *;
Это будет работать, и вы можете получить доступ к Foo, используя полное имя, используя простое имя приведет к использованию локальной Foo. Несогласованность, которую я вижу, заключается в том, что, хотя первая генерирует ошибку (вы импортировали класс, а единственная цель импорта - использовать простое имя, а не полное имя), последнее не приводит к предупреждение.
Я бы подумал, что оба случая будут генерировать предупреждение, т. Е. Вы можете использовать неправильный класс, поскольку он определен в 2-х местах, или оператор import избыточен, поскольку использование простого имени будет разрешено локально определенному классу , а не импортированный.
Так что мой вопрос: есть ли основная причина, по которой он реализован таким образом?
Да, это случай с нарушением, я это понимаю.
небольшое примечание: инструкция import используется только для того, чтобы вы не вводили имя пакета, оно ничего не делает, это просто ярлык. Если вы всегда используете полное имя, вам совсем не нужен импорт. –
Я понимаю, почему существуют пакеты, это только то, что кажется непоследовательным, чтобы иметь возможность ссылаться на класс в импортированном пакете и не иметь никаких предупреждений вообще - независимо от того, определяется ли класс с этим именем локально или нет - все же есть ошибка когда вы явно пытаетесь импортировать класс с тем же именем, что и локальный. В обоих случаях оператор import избыточен для этого класса, но один дает и ошибку, а другой ничего не делает. – Stinomus