Was bedeutet eine Tilde in spitzen Klammern beim Erstellen einer generischen Java-Klasse?


127

Ich habe einige JMockit-Beispiele gelesen und diesen Code gefunden:

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

Was bedeutet die Tilde im generischen Bezeichner? Ich weiß, dass es der unäre bitweise NICHT-Operator ist, aber ich sehe hier keinen Operanden.

Außerdem habe ich versucht, es zu kompilieren und habe einen Fehler erhalten. Vermisse ich nur etwas?

Antworten:


158

Es ist nur eine Abkürzung für "wie in der Erklärung".

Einige IDEs, z. B. IntelliJ, verwenden dies ebenfalls.

Die Dateien auf der Festplatte haben diese Notation nicht. Dies ist nur eine Komprimierung in der IDE-GUI.


1
Es war ein Intellij-Screenshot.
Michael K

Nur zur persönlichen Verdeutlichung - IntelliJ erstellt Java-Quelldateien mit dieser Notation, iaw, Quelldateien mit illegalem Java-Inhalt ??? Oder ist dies nur die Ansicht der Quelle und die gespeicherte Datei ist korrekt?
Andreas Dolk

5
@Andreas_D: Es ist nur eine Ansicht. Die Dateien auf der Festplatte sind in Ordnung.
openCage

6
Tatsächlich ist die Tilde grau (um anzuzeigen, dass sie anders ist), und wenn Sie darauf klicken, wird sie zur vollständigen Definition erweitert.
Yshavit

1
Dies kann in den Intelij-Einstellungen für Editor / Allgemein / Code-Faltung deaktiviert werden.
Ocie Mitchell


9

In IntelliJ IDEA ist das ~hier:

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

bedeutet String, das ist das gleiche wie in der Erklärung auf der linken Seite.


2

Ich denke, das ist eine Abkürzung für den Typ, in diesem Fall OrderItem .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.