在创建 Java 泛型类时,尖括号中的波浪是什么意思?

我通读了一些 JMockit 示例,发现了以下代码:

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

通用标识符中的波浪是什么意思?我知道它是一元位 NOT 操作符,但是我在这里没有看到操作数。

还有,我试着编译了一下,结果出错了,我是不是漏掉了什么?

37036 次浏览

我认为这是表示不管是什么类型的速记,在这种情况下是 OrderItem

它只是“与声明中的相同”的简写。

一些 IDE,例如 IntelliJ 也使用这个。

磁盘上的文件没有这种表示法,这只是 IDE GUI 中的一种压缩。

如果没有波浪,我会说,代码已经是 Java7了。因此这是/将是合法的 Java 代码:

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

(但没有这种语法的波浪线)

在 IntelliJ IDEA 中,这里的 ~:

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

意味着 String,与左边的声明中的相同。