Je lisais quelques exemples de 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?
Il s'agit simplement d'un raccourci pour "comme dans la déclaration".
Certains IDE, par exemple IntelliJ l'utilise aussi.
Les fichiers sur le disque n'ont pas cette notation, qui n'est qu'un compactage dans l'interface graphique IDE.
S'il n'y avait pas de tilde, je dirais que le code était déjà Java 7. Java 7 autorise l'opérateur diamant donc c'est/sera légal = Java code:
Map<String, List<String>> map = new HashMap<>();
(mais - pas de tilde avec cette syntaxe)
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.
Je pense que c'est un raccourci pour signifier quel que soit le type, dans ce cas OrderItem.