#java #intellij-idea #intellij-13
#java #intellij-идея #intellij-13
Вопрос:
Когда я выбираю Refactoring > Move
класс Java, и в результате IntelliJ предупреждает, что это вызовет конфликты для других классов. Есть ли способ сообщить IntelliJ переместить класс вместе с любыми классами, которые также могут иметь конфликты?
РЕДАКТИРОВАТЬ: похоже, мой первоначальный вопрос неясен, поэтому я привожу пример.
Если у меня есть ClassA, который использует ClassB внутри. Если я перемещу ClassA в другой каталог (другой модуль maven), ClassA больше не сможет получить доступ к ClassB. В идеале IntelliJ должен иметь возможность автоматического перемещения ClassB в другой каталог.
Комментарии:
1. привет, просто нажмите на класс, нажмите клавишу f6, затем выберите пакет для перемещения и нажмите refactor intellij автоматически обрабатывает ссылки
2. @M.Sharma Я только что обновил вопрос примером. Пожалуйста, посмотрите.
3. В этом случае это может быть ошибка IntelliJ, потому что после рефакторинга intellij автоматически обрабатывает операторы импорта
4. @M.Sharma Конфликты возникают не из-за операторов импорта. ClassB будет иметь ошибки компиляции, потому что он не может получить доступ к ClassA, который сейчас находится в другом каталоге / модуле.
5. Босс, какой именно класс выдает вам ошибку компилятора при импорте, просто наведите курсор на него и нажмите
ALT ENTER
и во всплывающем меню добавьте оператор импорта пути к модулю
Ответ №1:
Когда вы пытаетесь переместить класс (вы можете выполнить рефакторинг> Переместить или нажать клавишу F6 или просто перетащить), Intellij предоставляет некоторые варианты, такие как:
Search in comments and strings
Search for text occurrences
Search for references
и т.д..
Если вы выберете все эти Intellij, он будет обрабатывать ваши зависимости. Так что вам не нужно беспокоиться о них.
Установите флажок также Переместить диалоговое окно класса
Комментарии:
1. Я не вижу опции «Поиск ссылки» в IDEA 13. Снимок экрана
2. Да, вы правы. В документации указано, что эта опция доступна только для рефакторинга файлов или пакетов. Но в любом случае, если вы установите два флажка, все будет в порядке.
3. Похоже, мой первоначальный вопрос неясен, так как я привожу пример. Пожалуйста, посмотрите.
Ответ №2:
Проверьте модификаторы доступа всех классов, которые вы пытаетесь переместить.
Возможно, вы использовали модификатор ‘package-private’ (по умолчанию), а затем, когда вы перемещаете эти классы в другой пакет, другие классы теряют к ним доступ.
Комментарии:
1. Я понимаю, почему занятия приводят к конфликту. Вопрос заключается в том, как перенести эти классы в новый пакет.