Значение оператора импорта в файле Java - PullRequest
17 голосов
/ 25 мая 2010

Может ли кто-нибудь четко объяснить мне, что именно происходит, когда мы используем оператор импорта в файлах Java? Увеличивает ли он размер файла, если мы добавляем все больше и больше классов Java? Почему мы не используем загрузчик классов для одного и того же? А какие ограничения на импорт?

Ответы [ 5 ]

43 голосов
/ 25 мая 2010

import объявления (не операторы ) по сути являются кратким механизмом включения на уровне исходного кода: он позволяет ссылаться на тип или член static, используяодин идентификатор (например, List, min) в отличие от полностью определенного имени (например, java.util.List, Math.min).

import раздел объявления является элементом времени компиляцииисходные коды, и не присутствует во время выполнения.В байт-кодах JVM имена типов всегда полностью определены, и если вы не используете плохо написанный компилятор, двоичный файл должен содержать имена только для типов, которые фактически используются.

Загрузчики классов используются для совершенно другихи не имеет ничего общего с функцией import.

Декларации импорта JLS 7.5

Декларация импорта позволяетstatic член или именованный тип, на который должно ссылаться простое имя, состоящее из одного идентификатора.Без использования соответствующего объявления import единственный способ сослаться на тип, объявленный в другом пакете, или static член другого типа, это использовать полностью определенное имя.

ОдиночныйОбъявление -type-import импортирует один именованный тип, указав его каноническое имя.

Объявление type-import-on-demand импортирует все доступные типы именованного типа или пакета по мере необходимости.Импортировать тип из неназванного пакета - ошибка времени компиляции.

Одно статическое объявление импорта импортирует все доступные статические члены с заданным именем из типа, присваивая его каноническое имя.

Объявление статического импорта по требованию импортирует все доступные статические члены именованного типа по мере необходимости.

Ссылки

См. Также


Различные import связанные вопросы

О грамматической роли import:

По требованию по сравнению с однотипным:

Вкл. import static:

Проблемы, связанные с производительностью:

4 голосов
/ 25 мая 2010

Пакеты состоят из классов, классы в пакете состоят из методов, переменных и т. Д. И т. Д. У класса есть полное имя, которое состоит из имени пакета и имени класса. Если вам нужно использовать класс в своем коде, вам нужно дать компилятору полное имя класса. Итак, вы используете оператор импорта ИЛИ вы можете ввести полное имя в каждом месте, где вы используете этот класс в своем коде.

Например, если вам требуется AraryList в вашем коде, вы используете оператор импорта import java.util.ArrayList; вместо того, чтобы вводить полное имя класса в каждом месте, где вам нужен Arraylist.

Для получения более подробной информации см. JLS .

3 голосов
/ 25 мая 2010

Импорт в java - это только подсказки для компилятора. Это никак не влияет на размер файла двоичного класса. Вы можете использовать импорт один раз или писать полное имя класса каждый раз, когда вы его используете.

Импорт - это просто уступка читабельности и лень разработчика.

2 голосов
/ 25 мая 2010

import операторы говорят компилятору: если у вас есть функция, которую нельзя найти в этом классе, посмотрите в списке импорта.

Таким образом, вы можете ссылаться на функции в других пакетах, не копируя определение (например, файлы C (++) .h) в ваш собственный пакет.

0 голосов
/ 30 июня 2012

Оператор импорта в Java позволяет ссылаться на классы, которые объявлены в других пакетах для доступа без ссылки на полное имя пакета. Вам не нужен оператор import, если вы всегда хотите ссылаться на java.util.List по его полному имени и так далее для всех других классов. Но если вы хотите сослаться на него как на List, вам нужно импортировать его, чтобы компилятор знал, на какой список вы ссылаетесь.

Классы из пакета java.lang импортируются автоматически, поэтому вам не нужно явно делать это, например, для ссылки на String.

Подробнее: http://wiki.answers.com/Q/Why_import_statement_is_needed_in_Java_program#ixzz1zDh2ZBhE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...