Что означает тильда в угловых скобках при создании универсального класса Java?


127

Я читал несколько примеров JMockit и нашел этот код:

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

Что означает тильда в универсальном идентификаторе? Я знаю, что это унарный побитовый оператор НЕ, но я не вижу здесь операнда.

Также я попытался скомпилировать его и получил ошибку. Я что-то упускаю?

Ответы:


158

Это просто сокращение от «то же, что и в объявлении».

Некоторые IDE, например IntelliJ, тоже используют это.

Файлы на диске не имеют этой нотации, это просто сжатие в графическом интерфейсе IDE.


1
Это был скриншот Intellij.
Michael K

Просто для личного пояснения - IntelliJ создает исходные файлы Java с этой нотацией, iaw, исходные файлы с незаконным содержимым Java ??? Или это просто вид на источник и сохраненный файл правильный?
Андреас Долк

5
@Andreas_D: Это просто взгляд. Файлы на диске в порядке.
openCage 03

6
На самом деле тильда неактивна (чтобы указать, что она другая), и если вы нажмете на нее, она расширится до полного определения.
yshavit

1
Это можно отключить в настройках intelij для редактора / общего / сворачивания кода.
Ocie Mitchell 05


9

В IntelliJ IDEA ~здесь:

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

означает String, что то же самое, что и в объявлении слева.


2

Я думаю, что это сокращение для обозначения любого типа, в данном случае OrderItem .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.