创建Java泛型类时,角括号中的波浪线表示什么意思?

148

我正在阅读一些JMockit示例,发现了这段代码:

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

波浪号在泛型标识符中表示什么?我知道它是一元位取反运算符,但我在这里没有看到操作数。

另外,我尝试编译它并得到了一个错误。我是不是缺少什么东西?

4个回答

177

它只是“same as in declaration”的简写。

一些IDE,比如IntelliJ也使用这个符号。

磁盘上的文件没有这个标记,它只是IDE GUI中的一个缩写。


1
这是一个Intellij的截图。 - Michael K
1
仅供个人澄清 - IntelliJ生成带有this符号的Java源代码文件,也就是说,生成了不合法的Java内容?还是说这只是源代码的视图,保存的文件是正确的? - Andreas Dolk
5
这只是一种观点。硬盘上的文件是正常的。 - openCage
8
实际上,波浪线被标记为灰色(以表示它与其他内容不同),如果你点击它,它会展开到完整的定义。 - yshavit
1
这可以在Intelij的设置中禁用编辑器/通用/代码折叠。 - Ocie Mitchell

20

如果没有波浪号,我会说,这段代码已经是Java 7了。 Java 7允许使用菱形操作符,因此这段代码是/将成为合法的Java代码:

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

但是-这种语法没有波浪号


15
在IntelliJ IDEA中,这里的~表示:
Set<String> associations = new LinkedHashSet<~>();

表示String,与左侧声明中的相同。


2
我认为这是一种缩写,意思是无论类型是什么,在这种情况下是OrderItem

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接