Finalización de la importación estática de IntelliJ

78

En Eclipse pude registrar un conjunto de clases para el autocompletado de importación estática, por ejemplo, Math. , Afirmar. , EasyMock. *

Con esto habilitado, pude presionar ctrl-space assertEquals, pow, createMock, etc., aparecerían como finalizaciones de código válidas.

Estoy luchando por encontrar esto en IntelliJ pero estoy seguro de que debe existir. ¿Alguien puede ayudar?

¡Gracias!

Scruffers
fuente

Respuestas:

62

Versión> = 11:

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

Versión <11

Settings -> Code Style -> Imports

En el medio del panel está la tabla "Paquetes para usar Importar con '*'". Puede agregar una entrada aquí de un nombre de clase completamente calificado y marcar la casilla estática; ahora todos los métodos estáticos de esta clase estarán disponibles para autocompletar.

(No estoy seguro de cómo funciona la importación estática al especificar un paquete, ya que nunca lo he probado, pero no veo por qué no lo haría. Especificar un superpaquete y marcar la opción "con subpaquetes" podría ser aún más interesante.)

Andrzej Doyle
fuente
8
¿Es posible configurar IntelliJ para agregar una importación estática del método y no *?
Matt b
6
En la versión 11, lo veo debajo de Code Style -> Javadonde hay una Importspestaña. No puedo recordar ahora si era así como se veía en v10, y mi descripción era descuidada, o si solía ser un poco diferente. Alguien con una versión anterior de IntelliJ, no dude en editar esta respuesta en consecuencia.
Andrzej Doyle
2
En la versión 13: Ctrl + Espacio, mire el texto diminuto en la parte inferior del menú desplegable, que le dice 'Para importar estáticamente Alt + Enter'. Entonces la combinación es Ctrl + ESPACIO, Alt + ENTRAR
user1016765
3
En mi versión, 13.1.3, solo Alt + ENTER funciona bien. Puede elegir una importación estática de .*si presiona Alt + ENTRAR mientras está en la clase (reemplazando todo, excepto donde resultaría en un conflicto de nombres, muy bueno).
Maarten Bodewes
6
En IntelliJ 2016, es Configuración -> Editor -> Estilo de código -> Importaciones. Desafortunadamente, agregar una entrada estática para org.junit.Assertno parece funcionar: el autocompletado assese expandirá Assert.assertEquals, no assertEqualscon la importación estática activadaAssert.*
Jorn
50

Alt + Enterhará el truco. Primero debe tener la expresión completa y el resultado Alt + Enteren el método que desea importar estáticamente.

importar estáticamente IntelliJ

nucatus
fuente
8
¿Hay alguna forma de configurar esto para que se importe de forma predeterminada sin tener que presionar Alt + Enter cada vez?
Siddhartha
Desafortunadamente, no conozco tal funcionalidad.
nucatus
3
Esto parece haber dejado de funcionar en IDEA 2018.1, cualquier idea de cómo recuperarlo
David Roussel
38

Si está utilizando IntelliJ 10, intente lo siguiente:

assEq<Ctrl-Alt-Space>

Aceptar una sugerencia de la lista emergente resultante insertará, de forma predeterminada, una referencia ClassName.methodName () (que puede convertir en una importación estática usando una intención Alt-Enter).

También puede insertar un método importado estáticamente de la lista de finalización seleccionando "Derecha" en el menú de finalización y seleccionando "Importar estáticamente":

ingrese la descripción de la imagen aquí

Tenga en cuenta que una vez que haya importado estáticamente un solo método de una clase (Assert.assertSame), otros métodos estáticos de esa clase (como Assert.assertEquals) se incluirán en la finalización de código "regular" (Ctrl-Espacio).

Pakka Pakka
fuente
¿Qué paso no funciona? ¿Se sugiere asertEquals () usando Ctrl-Alt-espacio, o seleccionando las opciones de importación estática?
Pakka Pakka
el primer paso no funcionó, pero me diste la solución con tu comentario. De hecho, escribió CTRL + MAYÚS + ESPACIO en la respuesta pero CTRL + ALT + ESPACIO en el comentario. El último está funcionando bien.
Paolo Fulgoni
Guau. Usando IntelliJ durante 18 meses y esta es la primera vez que aprendo sobre esta excelente característica. ¿Cómo lo encuentro en el menú o vía Ctrl+Shift+A?
kevinarpe
Por razones históricas, la acción se denomina Finalización de nombre de clase .
Pakka Pakka
35

Para Intellij 12 acaba de golpear <ctrl + spacebar(twice)>. Luego, para importar el método, presione estáticamente <alt + return>. De lo contrario, simplemente presionando enter insertará el nombre completo del método.

Actualización: a veces, el solo uso <alt + return>también funciona.

lealBrown
fuente
9

En OS X necesitas hacer una opción + volver.

John Dewell
fuente
6

Simplemente haga la referencia una vez, luego coloque el signo de intercalación en el nombre de la clase (es decir, Math), presione alt + enter y elija "agregar importación estática bajo demanda para 'java.lang.Math'. Intellij agregará

import static java.lang.Math.*;

al principio del archivo.

Andreas Wederbrand
fuente
8
Pero todavía tengo que hacer eso en cada archivo :(
Scruffers
0

Ahora es posible agregar plantillas en vivo con importaciones estáticas :

Tienes que verificar la importación estática en Opciones

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

ingrese la descripción de la imagen aquí

JorgeTovar
fuente