Que signifie ce tilde?

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 unaire bitwise NOT, mais je ne vois pas d'opérande ici.

Aussi, j'ai essayé de le compiler et j'ai eu une erreur. Suis-je raté quelque chose?

101
demandé sur Michael K 2011-02-03 18:10:25

4 réponses

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

Certains IDE, par exemple IntelliJ l'utilisent aussi.

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

124
répondu openCage 2018-04-08 06:16:48

S'il n'y avait pas de tilde, je dirais que le code était déjà Java 7. Java 7 permet à l'opérateur diamond donc c'est / sera un code Java légal:

Map<String, List<String>> map = new HashMap<>();

(mais pas de tilde avec cette syntaxe)

13
répondu Andreas_D 2011-02-03 15:51:39

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.

7
répondu Zinan Xing 2015-02-19 22:50:14

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

2
répondu Andrew White 2011-02-03 15:12:06