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

Mic*_*l K 121 java generics syntax intellij-idea tilde

我正在阅读一些JMockit示例并找到此代码:

final List<OrderItem> actualItems = new ArrayList<~>();
Run Code Online (Sandbox Code Playgroud)

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

此外,我尝试编译它并得到一个错误.我只是错过了一些东西吗?

ope*_*age 152

它只是"与宣言相同"的简写.

一些IDE,例如IntelliJ也使用它.

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

  • 实际上,波浪号是灰色的(表示它是不同的),如果你点击它,它将扩展到完整的定义. (6认同)
  • @Andreas_D:这只是一个观点.磁盘上的文件没问题. (5认同)

And*_*s_D 15

如果没有代字号,我会说,代码已经是Java 7. Java 7允许钻石运算符,所以这将是合法的Java代码:

Map<String, List<String>> map = new HashMap<>();
Run Code Online (Sandbox Code Playgroud)

(但是 - 没有这种语法的代字号)


Zin*_*ing 9

在IntelliJ IDEA中,~这里:

Set<String> associations = new LinkedHashSet<~>();
Run Code Online (Sandbox Code Playgroud)

是指String,与左侧的声明中的相同.