Что означает тильда в угловых скобках при создании универсального класса Java? - PullRequest
112 голосов
/ 03 февраля 2011

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

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

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

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

Ответы [ 4 ]

141 голосов
/ 03 февраля 2011

Это просто сокращение от "как в объявлении".

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

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

13 голосов
/ 03 февраля 2011

Если бы не было тильды, я бы сказал, что код уже был Java 7. Java 7 позволяет оператору бриллианта , так что это / будет допустимый код Java:

Map<String, List<String>> map = new HashMap<>();

(но - без тильды с этим синтаксисом)

7 голосов
/ 20 февраля 2015

В IntelliJ IDEA ~ здесь:

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

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

2 голосов
/ 03 февраля 2011

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

...