зачем многократно импортировать библиотеки - PullRequest
3 голосов
/ 06 июня 2011

в большинстве примеров кода я вижу, как люди делают это.

import javax.swing.*; // for the frame
import java.awt.*; // for the checkBox and the label
import java.awt.event.*; // for the checkBox listener

Если я прав, когда мы говорим import java.awt. * Он импортирует все внутри него, поэтому не нужно будет говорить importjava.awt.event *.или есть улучшение скорости?Может ли кто-нибудь также объяснить, что делает импорт библиотеки, импортирует ли он простой текстовый класс для включения в исходный код или говорит jvm включить байтовый код того, что импортируется?поэтому импорт в java ничего не делает, кроме переключения пространства имен, поэтому мне не нужно вводить длинные имена классов?

Ответы [ 4 ]

5 голосов
/ 06 июня 2011

Забудьте термин подпакет .Сделай это быстро.Он не существует в мире Java.

java.awt - это пакет (пространство имен), java.awt.event - еще один пакет, и они не имеют ничего общего.Их имена имеют несколько общих символов, но пакеты абсолютно не связаны.Операторы импорта импортируют класс или некоторые классы из одного пакета (пространства имен).Если вам нужны классы из другого пакета (пространства имен), вам нужно добавить еще один оператор импорта.


КСТАТИ , в ответ на комментарий к другому ответу: Вы не делаетедолжны использовать операторы импорта.Если вы не используете их, вам просто нужно использовать полные имена классов в вашем исходном файле java (за исключением: классы из java.lang и текущий пакет импортируются автоматически).Таким образом, import может рассматриваться как удобный способ сделать код читабельным.

Импорт не требуется для использования класса в исходном файле.

4 голосов
/ 06 июня 2011

Линия ...

import java.awt.*;

... не означает, что все подпакеты также будут импортированы. Вы должны явно импортировать каждый пакет. Например, импорт java. * Не дает вам всей библиотеки java.

Для чего бы то ни было, я рекомендую импортировать только определенные классы, если у вас нет веских оснований для использования *.

1 голос
/ 06 июня 2011

Импорт - это просто функция времени компиляции, в байт-коде вы найдете только прямые ссылки на определенные классы, каждый раз, когда используется его экземпляр.Конструкции «import» существуют только для того, чтобы исключить использование полного имени класса каждый раз.

1 голос
/ 06 июня 2011

При импорте пакета не импортируются его подпакеты.

Импорт также касается переключения пространства имен.

Если у вас был только import java.awt.* и вы должны были использовать класс java.awt.Outer.Inner, везде в вашем коде вы должны ссылаться на него как Outer.Inner.

Напротив, когда вы говорите import java.awt.Outer.*, вы можете ссылаться на внутренний класс как Inner.

...