2011-02-03 3 views
95

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

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

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

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

ответ

116

Это просто сокращение для «того же, что и в декларации». Некоторые IDE, например. Intellij тоже это использует.

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

+1

Это был снимок экрана Intellij. –

+0

Только для личного разъяснения - IntelliJ создает исходные файлы Java с * this * notation, iaw, исходные файлы с незаконным содержимым Java ??? Или это просто * вид * источника, а сохраненный файл правильный? –

+5

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

2

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

13

Если не было Тильда, я бы сказал, код уже был Java 7. Java 7 allows the diamond operator так это/будет законно код Java:

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

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

5

в IntelliJ IDEA, то ~ здесь:

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

означает String, который является таким же, как и в декларации на левой стороне.

Смежные вопросы