Импортирование классов Java

Импортирование классов JavaКласс может использовать все классы из собственного пакета и все общедоступные классы из других пакетов. Доступ к классам их других пакетов можно получить двумя путями. Во первых, можно указывать полное имя пакета перед именем каждого класса. Например:

Очевидно, что этот способ слишком утомителен. Более простой и распространенный способ предусматривает применение ключевого слова import. В этом случае имя пакета перед именем класса записывать не обязательно. Импортировать можно как один конкретный класс, так и весь пакет. Операторы import следует поместить в начало исходного файла(после всех операторов package). Например, все классы из пакета java.util можно импортировать следующим образом:

После этого в строке кода, указанной ниже, имя пакета не указывается.

Можно также импортировать отдельный класс из пакета:

Импортировать все классы проще. На размер кода это не влияет. Однако если явным образом указать импортируемый класс, становится ясно, какие именно классы будут использованы в программе.

Работая с Eclipse, можно использовать пункт меню Source->Organize Imports(Исходный код->Импортирование). В результате выражения типа import java.util.*; будут автоматически преобразованы в последовательности строк, предназначенных для импортирования отдельных классов:

Эта возможность несколько упрощает работу программиста.

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

В большинстве случаев импортируется весь весь пакет, независимо от его размера. Единственный вариант, при котором на пакет следует обратить особое внимание — конфликт имен. Например, и пакет java.util и пакет java.sql содержат класс Date. Допустим, вы пишите программу, импортирующую оба этих пакета:

Если теперь попытаться использовать класс Date, возникает ошибка компиляции:

Компилятор не может определить, какой класс Date вам нужен. Решить эту проблему можно, добавив конкретный оператор import:

А если вам на самом деле нужны оба класса Date? В этом случае нужно указывать полное имя пакета для каждого имени класса:

Обнаружение классов в пакетах является задачей компилятора. В ссылках, находящихся в файлах классов, всегда содержатся полные имена пакетов.