¿Qué significa una tilde entre paréntesis angulares al crear una clase genérica de Java?


127

Estaba leyendo algunos ejemplos de JMockit y encontré este código:

final List<OrderItem> actualItems = new ArrayList<~>();

¿Qué significa la tilde en el identificador genérico? Sé que es el operador NOT bit a bit unario, pero no veo un operando aquí.

Además, intenté compilarlo y obtuve un error. ¿Me estoy perdiendo algo?

Respuestas:


158

Es solo una abreviatura de "igual que en la declaración".

Algunos IDEs, por ejemplo, IntelliJ también usan esto.

Los archivos en el disco no tienen esta notación, que es solo una compactación en la GUI IDE.


1
Fue una captura de pantalla de Intellij.
Michael K

Solo para aclaración personal: ¿IntelliJ produce archivos fuente Java con esta notación, iaw, archivos fuente con contenido ilegal de Java? ¿O es solo la vista de la fuente y el archivo guardado es correcto?
Andreas Dolk

55
@Andreas_D: es solo una vista. Los archivos en el disco están bien.
openCage

66
Y en realidad, la tilde está en gris (para indicar que es diferente), y si hace clic en ella, se expandirá a la definición completa.
yshavit

1
Esto se puede deshabilitar en la configuración de intelij para editor / general / Code Folding.
Ocie Mitchell


9

En IntelliJ IDEA, el ~aquí:

Set<String> associations = new LinkedHashSet<~>();

significa String, que es lo mismo que en la declaración en el lado izquierdo.


2

Creo que es una forma abreviada de significar cualquiera que sea el tipo, en este caso OrderItem .

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.