Завершення статичного імпорту IntelliJ


78

В Eclipse я зміг зареєструвати набір класів для автоматичного заповнення статичного імпорту, наприклад Math. , Стверджуйте. , EasyMock. *

З увімкненою функцією я зміг натиснути ctrl-space assertEquals, pow, createMock тощо, що відображатиметься як дійсне завершення коду.

Я намагаюся знайти це в IntelliJ, але впевнений, що воно повинно існувати. Хто-небудь може допомогти?

Дякую!

Відповіді:


62

Версія> = 11:

Settings -> Code Style -> Java -> Imports (tab).

Версія <11

Settings -> Code Style -> Imports

У середині панелі знаходиться таблиця "Пакети для використання з імпортом із символом '*'". Ви можете додати сюди запис повністю кваліфікованого імені класу та встановити прапорець біля статичного поля; тепер усі статичні методи в цьому класі будуть доступні для автоматичного заповнення.

(Я не впевнений, як працює статичний імпорт із зазначенням пакету, оскільки я ніколи його не пробував, але я не розумію, чому б цього не сталося. Вказівка ​​суперпакета та позначення параметра "з підпакетами" могли б бути ще цікавішим.)


8
Чи можна налаштувати IntelliJ просто додавати статичний імпорт методу, а ні *?
matt b

6
У версії 11 я бачу це Code Style -> Javaтам, де є Importsвкладка. Зараз я не можу згадати, чи так це виглядало у v10, і мій опис був недбалим, чи раніше він був дещо іншим. Хтось із попередньою версією IntelliJ, сміливо редагуйте цю відповідь відповідно.
Анджей Дойл

2
У версії 13: Ctrl + Пробіл, подивіться на крихітний текст внизу спадного меню, в якому сказано "Імпортувати статично Alt + Enter". Тож комбінація - Ctrl + ПРОБІЛ, Alt + ENTER
user1016765

3
У моїй версії, 13.1.3, просто Alt + ENTER працює нормально. Ви можете вибрати статичний імпорт, .*якщо натискаєте Alt + ENTER, перебуваючи в класі (замінюючи все, крім випадків, коли це призведе до зіткнення імен, дуже приємно).
Maarten Bodewes

6
В IntelliJ 2016 це Налаштування -> Редактор -> Стиль коду -> Імпорт. На жаль, додавання статичного запису для org.junit.Assert, здається, не працює: автозаповнення asseрозшириться на Assert.assertEquals, а не на assertEqualsввімкнене статичне імпортуванняAssert.*
Jorn

50

Alt + Enterзробить трюк. Спочатку потрібно мати цілий вираз і хітAlt + Enter до методу, який потрібно статично імпортувати.

статично імпортувати IntelliJ


8
Чи є спосіб налаштувати це так, щоб він виконував цей імпорт за замовчуванням, не натискаючи Alt + Enter кожного разу?
Сіддхартха,

На жаль, я не знаю такої функціональності.
nucatus

3
Здається, це перестало працювати в IDEA 2018.1, будь-яка ідея, як його повернути
Девід Руссель,

38

Якщо ви використовуєте IntelliJ 10, спробуйте наступне:

assEq<Ctrl-Alt-Space>

Приймаючи пропозицію із спливаючого списку, за замовчуванням буде вставлено посилання ClassName.methodName () (яке можна перетворити на статичний імпорт, використовуючи намір Alt-Enter).

Ви також можете вставити статично імпортований метод зі списку заповнення, вибравши "Вправо" в меню завершення та вибравши "Імпортувати статично":

введіть тут опис зображення

Зауважте, що після статичного імпортування одного методу з класу (Assert.assertSame), інші статичні методи з цього класу (наприклад, Assert.assertEquals) будуть включені до «звичайного» завершення коду (Ctrl-Space).


Який крок не працює? Отримати assertEquals () запропоновано за допомогою Ctrl-Alt-space або вибрати статичні параметри імпорту?
Пакка Пакка

перший крок не працював, але ви дали мені рішення своїм коментарем. Насправді ви відповіли CTRL + SHIFT + ПРОБІЛ у відповіді, але CTRL + ALT + ПРОБІЛ у коментарі. Останній працює нормально.
Паоло Фульгоні,

Ого. Використовуючи IntelliJ протягом 18 місяців, і я вперше дізнався про цю чудову функцію. Як знайти в меню чи через Ctrl+Shift+A?
kevinarpe

З історичних причин дія називається Завершення назви класу .
Pakka Pakka

35

Для Intellij 12 просто натисніть <ctrl + spacebar(twice)>. Потім імпортувати метод статично потрапляє<alt + return> . В іншому випадку, просто натиснувши клавішу Enter, буде вставлено повну назву методу.

Оновлення: Іноді просто використання також <alt + return>працює.



6

Просто зробіть посилання один раз, потім поставте каретку на ім'я класу (тобто Math), натисніть alt + enter і виберіть "додати статичний імпорт за запитом для 'java.lang.Math'. Intellij додасть

import static java.lang.Math.*;

до початку файлу.


8
Але я все одно маю це робити у кожному файлі :(
Scruffers

0

Тепер можна додавати реальні шаблони зі статичним імпортом :

Вам потрібно перевірити статичний імпорт у Параметрах

@org.junit.Test
public void should$EXPR$when$CONDITION$() {
    org.junit.Assert.assertThat(null, org.hamcrest.CoreMatchers.is(org.hamcrest.CoreMatchers.nullValue())); 
}

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.