Операторы импорта влияют только на то, что происходит во время компиляции.
Компилятор берет этот код и создает файл .class
, который представляет ваш код в исполняемом формате (что-то в двоичном формате).
В конце двоичные файлы точно такие же, но метод, с помощью которого они создаются, отличается.
Давайте рассмотрим простой случай:
import java.util.*;
против
import java.util.ArrayList;
import java.util.List;
при использовании в:
//...
List <String> someList = new ArrayList <String> ();
//...
Когда компилятор встречает слово List
, в первом случае ему необходимо выяснить, существует ли List
в этом наборе классовили нет.Во втором случае это уже дано явно, так что это намного проще.
По сути, происходит то, что компилятор должен принимать все классы, существующие в операторах import
, и отслеживать их имена так,что, если вы используете его, компилятор может затем извлечь соответствующие функции, которые вы вызываете.
Иногда существуют классы с одинаковыми именами в нескольких пакетах.В этом случае (на что ссылается Томас) не следует использовать *
для выбора всех классов в каталоге.
Лучше явно описать использование вашего класса.