Que signifie un tilde entre crochets lors de la création d'une classe générique Java?


127

Je lisais quelques exemples JMockit et j'ai trouvé ce code:

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

Que signifie le tilde dans l'identifiant générique? Je sais que c'est l'opérateur NOT unaire au niveau du bit, mais je ne vois pas d'opérande ici.

De plus, j'ai essayé de le compiler et j'ai eu une erreur. Suis-je juste en train de manquer quelque chose?

Réponses:


158

C'est juste un raccourci pour «même que dans la déclaration».

Certains IDE, par exemple IntelliJ, l'utilisent également.

Les fichiers sur disque n'ont pas cette notation, qui n'est qu'un compactage dans l'interface graphique IDE.


1
C'était une capture d'écran Intellij.
Michael K

Juste pour clarification personnelle - IntelliJ produit des fichiers source Java avec cette notation, iaw, des fichiers source avec un contenu Java illégal ??? Ou est-ce simplement la vue de la source et le fichier enregistré est correct?
Andreas Dolk

5
@Andreas_D: Ce n'est qu'une vue. Les fichiers sur le disque sont ok.
openCage

6
Et en fait, le tilde est grisé (pour indiquer qu'il est différent), et si vous cliquez dessus, il s'étendra à la définition complète.
yshavit

1
Cela peut être désactivé dans les paramètres intelij pour l'éditeur / général / Pliage de code.
Ocie Mitchell


9

Dans IntelliJ IDEA, le ~ici:

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

signifie String, qui est le même que dans la déclaration sur le côté gauche.


2

Je pense que c'est un raccourci pour signifier quel que soit le type, dans ce cas OrderItem .

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.