Ответ 1
import
объявления (не операторы) - это, по сути, краткосрочный механизм на уровне исходного кода: он позволяет ссылаться на элемент типа или static
, используя один идентификатор (например, List
, min
) в отличие от полного имени (например, java.util.List
, Math.min
).
import
раздел декларации является элементом времени компиляции исходных кодов и не имеет присутствия во время выполнения. В байт-кодах JVM имена типов всегда полностью квалифицированы, и если вы не используете плохо написанный компилятор, двоичный файл должен содержать только имена для используемых типов.
Погрузчики классов используются для совершенно иной концепции и не имеют ничего общего с функцией import
.
JLS 7.5 Импорт объявлений
Объявление импорта позволяет использовать элемент
static
или именованный тип простым именем, состоящим из одного идентификатора. Без использования соответствующего объявленияimport
единственный способ ссылаться на тип, объявленный в другом пакете, или членstatic
другого типа - использовать полное имя.В объявлении однотипного импорта импортируется один и тот же тип, указывая его каноническое имя.
Объявление типа импорта по требованию импортирует все доступные типы именованного типа или пакета по мере необходимости. Это ошибка времени компиляции для импорта типа из неназванного пакета.
Одно статическое объявление импорта импортирует все доступные статические члены с заданным именем из типа, указывая его каноническое имя.
Объявление static-import-on-demand импортирует все доступные статические члены именованного типа по мере необходимости.
Ссылки
- JLS 7.5.1 Декларация с одним типом импорта
- JLS 7.5.2 Декларация типа импорта по требованию
- JLS 7.5.3 Одиночная статическая декларация импорта
- JLS 7.5.4 Статическая декларация по требованию
См. также
Различные import
связанные вопросы
О грамматической роли import
:
- Что называется
import
? - это объявление, а не выражение
В режиме on-demand vs single-type:
- Импортировать пакет. * vs import package.SpecificType
- Почему использование дикой карты с выражением импорта Java плохое?
- В чем разница между
import java.util.*;
иimport java.util.Date;
?
Вкл import static
:
- Что означает модификатор
static
послеimport
? - Что является хорошим прецедентом для статического импорта методов?
- Должен ли я использовать статический импорт?
Проблемы, связанные с производительностью: