IntelliJ Static Import Completion

78

In Eclipse konnte ich eine Reihe von Klassen für die automatische Vervollständigung des statischen Imports registrieren, z. B. Math. , Behauptet. , EasyMock. *

Wenn dies aktiviert war, konnte ich Strg-Leerzeichen drücken. AssertEquals, pow, createMock usw. würden als gültige Code-Vervollständigungen angezeigt.

Ich habe Mühe, dies in IntelliJ zu finden, bin mir aber sicher, dass es existieren muss. Kann jemand helfen?

Vielen Dank!

Scruffers
quelle

Antworten:

62

Version> = 11:

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

Version <11

Settings -> Code Style -> Imports

In der Mitte des Fensters befindet sich die Tabelle "Zu verwendende Pakete mit '*' importieren". Sie können hier einen Eintrag eines vollständig qualifizierten Klassennamens hinzufügen und das statische Kästchen ankreuzen. Jetzt stehen alle statischen Methoden in dieser Klasse zur automatischen Vervollständigung zur Verfügung.

(Ich bin nicht sicher, wie der statische Import mit der Angabe eines Pakets funktioniert, da ich es noch nie ausprobiert habe, aber ich verstehe nicht, warum dies nicht der Fall ist. Die Angabe eines Super-Pakets und das Aktivieren der Option "mit Unterpaketen" könnten dies noch interessanter sein.)

Andrzej Doyle
quelle
8
Ist es möglich, IntelliJ so zu konfigurieren, dass nur ein statischer Import der Methode hinzugefügt wird, und nicht *?
Matt B
6
In Version 11 sehe ich es unter, Code Style -> Javawo es eine ImportsRegisterkarte gibt. Ich kann mich jetzt nicht erinnern, ob es in Version 10 so ausgesehen hat und meine Beschreibung schlampig war oder ob es früher etwas anders war. Jemand mit einer früheren Version von IntelliJ kann diese Antwort entsprechend bearbeiten.
Andrzej Doyle
2
Sehen Sie sich in Version 13: Strg + Leertaste den winzigen Text am unteren Rand des Dropdown-Menüs an, der Ihnen sagt, dass Sie statisch Alt + Eingabe importieren sollen. Die Kombination ist also Strg + LEERTASTE, Alt +
EINGABETASTE
3
In meiner Version 13.1.3 funktioniert nur Alt + ENTER einwandfrei. Sie können einen statischen Import auswählen, .*wenn Sie in der Klasse Alt + ENTER drücken (alles ersetzen, außer wenn dies zu einem Namenskonflikt führen würde, sehr schön).
Maarten Bodewes
6
In IntelliJ 2016 sind es Einstellungen -> Editor -> Codestil -> Importe. Leider org.junit.Assertscheint das Hinzufügen eines statischen Eintrags für nicht zu funktionieren: Die automatische Vervollständigung assewird auf erweitert Assert.assertEquals, nicht auf assertEqualsmit statischem Import amAssert.*
Jorn
48

Alt + Enterwird den Trick machen. Sie müssen zuerst den gesamten Ausdruck und den Treffer Alt + Enterfür die Methode haben, die Sie statisch importieren möchten.

IntelliJ statisch importieren

nucatus
quelle
8
Gibt es eine Möglichkeit, dies so zu konfigurieren, dass dieser Import standardmäßig ausgeführt wird, ohne jedes Mal Alt + Eingabetaste drücken zu müssen?
Siddhartha
Eine solche Funktionalität ist mir leider nicht bekannt.
Nucatus
3
Dies scheint in IDEA 2018.1 aufgehört zu haben, jede Idee, wie man es zurückbekommt
David Roussel
38

Wenn Sie IntelliJ 10 verwenden, versuchen Sie Folgendes:

assEq<Ctrl-Alt-Space>

Wenn Sie einen Vorschlag aus der resultierenden Popup-Liste akzeptieren, wird standardmäßig eine Referenz ClassName.methodName () eingefügt (die Sie mit einer Alt-Enter-Absicht in einen statischen Import konvertieren können).

Sie können auch eine statisch importierte Methode aus der Abschlussliste einfügen, indem Sie im Abschlussmenü "Rechts" und "Statisch importieren" auswählen:

Geben Sie hier die Bildbeschreibung ein

Beachten Sie, dass nach dem statischen Import einer einzelnen Methode aus einer Klasse (Assert.assertSame) andere statische Methoden aus dieser Klasse (wie Assert.assertEquals) in die "reguläre" Code-Vervollständigung (Strg-Leertaste) einbezogen werden.

Pakka Pakka
quelle
Welcher Schritt funktioniert nicht? AssertEquals () mit Strg-Alt-Leertaste vorgeschlagen oder die statischen Importoptionen ausgewählt?
Pakka Pakka
Der erste Schritt hat nicht funktioniert, aber Sie haben mir die Lösung mit Ihrem Kommentar gegeben. Tatsächlich haben Sie in der Antwort STRG + UMSCHALT + LEERTASTE geschrieben, im Kommentar jedoch STRG + ALT + LEERTASTE. Der letzte funktioniert gut.
Paolo Fulgoni
Beeindruckend. Wenn ich IntelliJ 18 Monate lang benutze, lerne ich zuerst diese hervorragende Funktion kennen. Wie finde ich im Menü oder über Ctrl+Shift+A?
Kevinarpe
Aus historischen Gründen wird die Aktion als Klassennamenvervollständigung bezeichnet .
Pakka Pakka
33

Für Intellij 12 einfach drücken <ctrl + spacebar(twice)>. Dann, um die Methode statisch zu importieren, schlagen Sie <alt + return>. Andernfalls wird durch einfaches Drücken der Eingabetaste der vollständig qualifizierte Name der Methode eingefügt.

Update: Manchmal <alt + return>funktioniert auch nur die Verwendung .

loyalBrown
quelle
9

In OS X müssen Sie eine Option + Rückgabe ausführen.

John Dewell
quelle
6

Führen Sie die Referenz einfach einmal durch, setzen Sie dann das Caret auf den Klassennamen (z. B. Math), drücken Sie Alt + Eingabetaste und wählen Sie "Add On Demand Static Import für 'java.lang.Math'. Intellij fügt hinzu

import static java.lang.Math.*;

an den Anfang der Datei.

Andreas Wederbrand
quelle
7
Aber ich muss das immer noch in jeder Datei tun :(
Scruffers
0

Jetzt können Live-Vorlagen mit statischen Importen hinzugefügt werden :

Sie müssen den statischen Import in den Optionen überprüfen

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

Geben Sie hier die Bildbeschreibung ein

JorgeTovar
quelle