Cosa significa una tilde tra parentesi angolari quando si crea una classe generica Java?


127

Stavo leggendo alcuni esempi di JMockit e ho trovato questo codice:

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

Cosa significa la tilde nell'identificatore generico? So che è l'operatore NON bit a bit unario, ma non vedo un operando qui.

Inoltre, ho provato a compilarlo e ho ricevuto un errore. Mi sto perdendo qualcosa?

Risposte:


158

È solo una scorciatoia per "come nella dichiarazione".

Alcuni IDE, ad esempio IntelliJ, usano anche questo.

I file sul disco non hanno questa notazione, che è solo una compattazione nella GUI IDE.


1
Era uno screenshot di Intellij.
Michael K,

Solo per chiarimenti personali - IntelliJ produce file sorgente Java con questa notazione, tra cui file sorgente con contenuto Java illegale ??? O è solo la vista dell'origine e il file salvato è corretto?
Andreas Dolk,

5
@Andreas_D: è solo una vista. I file su disco sono ok.
openCage

6
E in realtà, la tilde è grigia (per indicare che è diversa), e se fai clic su di essa, si espanderà alla definizione completa.
yshavit,

1
Questo può essere disabilitato nelle impostazioni intelij per l'editor / generale / Piegatura del codice.
Ocie Mitchell,


9

In IntelliJ IDEA, il ~qui:

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

significa String, che è lo stesso della dichiarazione sul lato sinistro.


2

Penso che sia una scorciatoia per indicare qualunque sia il tipo, in questo caso OrderItem .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.