Co oznacza tylda w nawiasach ostrych podczas tworzenia klasy ogólnej Java?


127

Czytałem kilka przykładów JMockit i znalazłem ten kod:

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

Co oznacza tylda w identyfikatorze rodzajowym? Wiem, że to jednoargumentowy operator bitowy NOT, ale nie widzę tutaj operandu.

Próbowałem też go skompilować i wyskoczył błąd. Czy po prostu czegoś brakuje?

Odpowiedzi:


158

To jest po prostu skrót określenia „to samo co w deklaracji”.

Niektóre IDE, np. IntelliJ, również tego używają.

Pliki na dysku nie mają tej notacji, co jest jedynie kompresją w GUI IDE.


1
To był zrzut ekranu Intellij.
Michael K

Tylko dla osobistych wyjaśnień - IntelliJ tworzy pliki źródłowe Java z notacją, iaw, pliki źródłowe z nielegalną zawartością Java ??? Czy to tylko widok źródła i zapisanego pliku jest poprawny?
Andreas Dolk

5
@Andreas_D: To tylko widok. Pliki na dysku są w porządku.
openCage

6
W rzeczywistości tylda jest wyszarzona (aby wskazać, że jest inna), a jeśli ją klikniesz, rozwinie się do pełnej definicji.
yshavit

1
Można to wyłączyć w ustawieniach intelij dla edytora / ogólnego / zwijania kodu.
Ocie Mitchell,


9

W IntelliJ IDEA ~tutaj:

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

oznacza Stringto samo, co w deklaracji po lewej stronie.


2

Myślę, że jest to skrótowe oznaczenie dowolnego typu, w tym przypadku OrderItem .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.