Cosa significa un tilde con parentesi angolari quando si crea una classe generica Java?
-
28-10-2019 - |
Domanda
Stavo leggendo alcuni esempi JMockit e ho trovato questo codice:
final List<OrderItem> actualItems = new ArrayList<~>();
Cosa significa il tilde nell'identificatore generico? So che non è un operatore unario non operatore, ma non vedo un operando qui.
Inoltre, ho provato a compilarlo e ho ricevuto un errore. Mi manca solo qualcosa?
Soluzione
È solo una scorciatoia per "lo stesso della dichiarazione".
Alcuni ides, ad esempio, Intellij usano anche questo.
I file sul disco non hanno questa notazione, che è solo una compattazione nella GUI IDE.
Altri suggerimenti
Se non ci fosse un tilde, direi che il codice era già Java 7. Java 7 consente all'operatore di diamanti Quindi questo è/sarà il codice Java legale:
Map<String, List<String>> map = new HashMap<>();
(ma - nessuna tilde con questa sintassi)
In Idea Intellij, il ~
qui:
Set<String> associations = new LinkedHashSet<~>();
significa String
, che è lo stesso della dichiarazione sul lato sinistro.
Penso che sia stenografia significare qualunque sia il tipo, in questo caso OrderItem.