IntelliJ IDEA: как отключить автоматическую замену wildcard-импортов на отдельные импорты?
Полное руководство: как управлять wildcard-импортами в IntelliJ IDEA
Вы столкнулись с классической дилеммой: удобство wildcard-импортов против строгих правил код-стайла. Хорошая новость: IDEA даёт полный контроль над этим поведением. Плохая новость: настройки разбросаны по нескольким местам. Давайте разберёмся пошагово.
Шаг 1. Основные настройки импортов
Откройте File -> Settings -> Editor -> Code Style -> Java -> Imports. Здесь нас интересуют три ключевых параметра:
- Class count to use import with '*' — количество классов из одного пакета, при котором IDEA будет сворачивать их в wildcard. По умолчанию стоит 5. Если вы хотите, чтобы
import java.util.*появлялся только когда используется ровно 1 класс — поставьте 1. Но это не решит проблему полного запрета. - Names count to use static import with '*' — аналогично для статических импортов.
- Use single class imports — галочка «Всегда использовать отдельные импорты вместо wildcard». Если её снять, IDEA будет активнее предлагать wildcard.
Чтобы полностью запретить IDE разворачивать ваши import ...*; в отдельные импорты, установите оба числовых параметра в значение 999. Это означает: «Не сворачивать в wildcard, пока не будет 999 классов из одного пакета» — то есть практически никогда. Но! Это работает только для автоматической оптимизации (Ctrl+Alt+O). Если вы вручную написали import java.util.*;, IDEA может всё равно его развернуть при следующей оптимизации.
Шаг 2. Отключаем авто-разворачивание при вставке
Есть ещё одна хитрая настройка. Перейдите в Settings -> Editor -> General -> Auto Import. Найдите блок Java. Там есть опция Optimize imports on the fly — она автоматически применяет правила из Шага 1 при каждом изменении файла. Отключите её. Также уберите галочку Add unambiguous imports on the fly — она заставляет IDEA добавлять отдельные импорты для каждого нового класса, который вы начинаете использовать.
Шаг 3. Режим «Не трогать мои импорты» (для конкретных файлов)
Если вы хотите, чтобы только некоторые файлы сохраняли wildcard-импорты, используйте директивы форматирования. В начале файла добавьте специальный комментарий:
// @formatter:off
import java.util.*;
import java.io.*;
// @formatter:on
Но это работает только если включена опция Settings -> Editor -> Code Style -> Formatter Control (галочка «Enable formatter markers in comments»).
Шаг 4. Почему это не всегда хорошая идея?
Wildcard-импорты создают две проблемы в больших проектах:
- Неоднозначность. Если у вас есть
import java.util.*;иimport com.mycompany.util.*;, и оба пакета содержат классDate, компилятор выдаст ошибку. Придётся всё равно указывать полный путь. - Нечитаемость для коллег. Другие разработчики не видят, какие именно классы из пакета используются. Это усложняет код-ревью.
Но для учебных проектов, прототипов или личных утилит — вполне допустимо.
Итоговый чек-лист
- Зайдите в
Settings -> Editor -> Code Style -> Java -> Imports. - Установите Class count to use import with '*' = 999.
- Установите Names count to use static import with '*' = 999.
- Отключите
Settings -> Editor -> General -> Auto Import -> Optimize imports on the fly. - Готово! Теперь ваши
import ...*;останутся нетронутыми.
После этих настроек вы можете вручную написать import java.util.*; и IDEA больше не будет его разворачивать ни при сохранении, ни при оптимизации.
Альтернативный подход: используйте «пакетные» пресеты для разных проектов
Если вы работаете над несколькими проектами одновременно (например, учебные задачи и коммерческий проект), глобальные настройки могут мешать. В IntelliJ IDEA можно создать схемы код-стайла (Code Style Schemes) для разных сценариев.
Перейдите в Settings -> Editor -> Code Style. В выпадающем списке Scheme выберите Manage и создайте две копии схемы: «Strict» (для работы) и «Relaxed» (для учёбы). В «Relaxed» установите параметры импортов как описано в первом ответе (999 и отключение авто-оптимизации). В «Strict» оставьте дефолтные значения (например, 5 классов для wildcard).
Переключать схемы можно через тот же выпадающий список в настройках. Или, если вы используете разные IDE окна для разных проектов, можно настроить схему отдельно для каждого проекта через File -> Settings -> Other Settings -> Default Settings (для новых проектов) или через File -> Settings (for current project).
Этот подход удобен тем, что вы не забываете переключить настройки вручную — схема привязывается к проекту. Например, для вашего учебного проекта «Algorithms» можно раз и навсегда включить wildcard-импорты, а для рабочего «BankApp» оставить строгие правила.