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

Posted

技术标签:

【中文标题】创建 Java 泛型类时,尖括号中的波浪号是啥意思?【英文标题】:What does a tilde in angle brackets mean when creating a Java generic class?创建 Java 泛型类时,尖括号中的波浪号是什么意思? 【发布时间】:2011-06-20 17:56:15 【问题描述】:

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

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

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

另外,我尝试编译它并得到一个错误。我只是错过了什么吗?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

这是 Intellij 屏幕截图。 仅供个人澄清 - IntelliJ 生成带有 this 表示法的 Java 源文件,iaw,带有非法 Java 内容的源文件???或者这只是源的view 并且保存的文件是正确的? @Andreas_D:这只是一个视图。磁盘上的文件没问题。 实际上,波浪号是灰色的(表示它不同),如果你点击它,它会展开为完整的定义。 这可以在编辑器/通用/代码折叠的 intelij 设置中禁用。【参考方案2】:

在 IntelliJ IDEA 中,~ 在这里:

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

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

【讨论】:

【参考方案3】:

如果没有波浪号,我会说,代码已经是 Java 7。Java 7 allows the diamond operator 所以这是/将是合法的 Java 代码:

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

(但是 - 此语法中没有波浪号)

【讨论】:

【参考方案4】:

我认为这是表示任何类型的简写,在本例中为 OrderItem

【讨论】:

以上是关于创建 Java 泛型类时,尖括号中的波浪号是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

帮看下这句css中的波浪号是啥意思

201671010114 2016-2017-2 《Java程序设计》第十周学习总结

JAVA中的泛型类是啥东西?

浅析Java中的泛型

java中的接口名字后面有<t>是啥意思

java中泛型是啥意思,作用是啥?