Eclipse Auto Complete: Java 1.7 Generics Diamond

Acabo de actualizar a Luna (de Kepler) y noté un pequeño problema (pero molesto):
La terminación automática carece de la posibilidad de generar diamantes “” para genéricos ya especificados en la inicialización variable. Por ejemplo, cuando escribo:

Set mySet = new HashSet 

Espero que se complete automáticamente

 Set mySet = new HashSet(); 

más bien que

 Set mySet = new HashSet(); 

Estoy usando JDK 1.7 y el nivel de cumplimiento también está establecido en 1.7.

También es muy extraño que cuando golpee STRG + Space varias veces durante la finalización automática hasta que llegue a java-autocompletion nuevamente y luego presione Enter, entrega los diamantes esperados.

Esto se parece mucho a un error para mí.
¿Se conoce este error y hay alguna solución para este problema? No se pudo encontrar nada relacionado con este tema.

Probablemente haya instalado el complemento de Recomendadores de código . Desafortunadamente, este complemento se ve afectado por el error # 435597 que rompe esta funcionalidad.

Este error parece ocurrir solo si tiene ciertos tipos de propuestas habilitados en la ” lista de asistencia de contenido ” predeterminada ‘ ‘ ( Preferencias de Eclipse> Java> Editor> Asistencia de contenido> Avanzada ). Por ejemplo, podría recuperar el comportamiento correcto deshabilitando los siguientes tipos de propuestas:

  • Propuestas basicas
  • Propuestas JPA
  • Propuestas de plantillas

(El último es probablemente el más molesto si está utilizando plantillas de código …)

Cuando realiza un ciclo con ctrl + espacio , en realidad está llegando a las ” Propuestas de Java ” (en lugar de las ” Propuestas de Java inteligentes (Recomendadores de código) “), que no se ven afectadas por este error.

Este error está progtwigdo para la versión 2.2.0 en junio de 2015. Lo mejor que puedes hacer por el momento es:

  • Juegue con las propuestas para verificar cuáles desencadenan el error por usted (tal vez tome una captura de pantalla de su configuración actual antes de hacerlo);
  • Vote por el error # 435597 y el error # 435660 para solucionarlos;
  • Proponer parches para corregir esos errores 🙂

Set es una interfaz en lugar de una implementación, por lo que el IDE solo puede asumir que desea un tipo interno anónimo que siempre requiere el parámetro de tipo genérico. Podrías hacerlo

 Set mySet = new HashSet + CTRL + SPACE 

Esta característica de diamante se introduce en jdk 1.8, no funciona con jdk 1.7.
Así que es la nueva característica introducida por oracle.

Por lo tanto, esto solo dependerá de la versión jdk en su computadora, no de la versión ide.

    Intereting Posts