133 votes

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

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

De plus, j'ai essayé de le compiler et j'ai obtenu une erreur. Est-ce qu'il me manque quelque chose ?

166voto

openCage Points 1011

Il s'agit simplement d'un raccourci pour "comme dans la déclaration".

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

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

1 votes

C'était une capture d'écran Intellij.

0 votes

Juste pour une clarification personnelle - IntelliJ produit des fichiers source Java avec ce notation, iaw, fichiers sources avec du contenu Java illégal ??? Ou est-ce que c'est juste le voir de la source et du fichier enregistré est correcte ?

5 votes

@Andreas_D : C'est juste une vue. Les fichiers sur le disque sont corrects.

18voto

Andreas_D Points 64111

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

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

(mais - pas de tilde avec cette syntaxe)

11voto

Zinan Xing Points 417

Dans IntelliJ IDEA, le ~ ici :

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

signifie String qui est le même que dans la déclaration de la partie gauche.

2voto

Andrew White Points 23508

Je pense que c'est un raccourci pour dire que quel que soit le type, dans ce cas Élément de commande .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X