问题标签 [diamond-operator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
9842 浏览

java - 为什么在 Java 7 中使用菱形运算符进行类型推断?

List<String> list = new ArrayList();将导致编译器警告。

但是,以下示例编译时没有任何警告:List<String> list = new ArrayList<>();

我很好奇为什么需要引入钻石运算符。如果类型参数不存在,为什么不只对构造函数进行类型推断(因为它已经为 java 中的静态方法完成并被 google guava 等集合库利用)

编辑:使用毫驼答案作为起点,我查看了实际上是什么类型的擦除,而不仅仅是删除所有类型信息。编译器实际上做了更多(从官方文档复制):

  • 如果类型参数是无界的,则将泛型类型中的所有类型参数替换为其边界或 Object。因此,生成的字节码只包含普通的类、接口和方法。
  • 必要时插入类型转换以保持类型安全。
  • 生成桥方法以保留扩展泛型类型中的多态性。
0 投票
2 回答
113 浏览

generics - 实例化泛型类 (Java)

我一直被教导在你的代码中实例化一个泛型类时这样做:

但是当我在 Eclipse 中工作时,它总是自动完成它:

这两种说法有区别吗?

0 投票
2 回答
33354 浏览

java - Java中的菱形运算符是什么?

我有一个类型为 patient_class 的数组列表,数组列表类型用黄色下划线,IDE 提到了“新表达式中的冗余类型参数(改用菱形运算符)”。

我的问题是:我应该改用菱形运算符吗?这是必须的吗?将记录存储到 arraylist 时,我会遇到任何数据丢失或任何其他问题吗?

这是我的数组列表:

老实说,我不知道钻石运营商到底是什么。

0 投票
2 回答
200 浏览

perl - Perl 中使用 while 语句、菱形运算符 <> 和 $ARGV 变量解析和写入多个文本

我在目录中有一些文本文件,我想解析它们的内容并将其写入文件。到目前为止,我使用的代码是这样的:

当我运行这个脚本时,我只得到文件的标题,加上一个compiled.txt条目。我还在 cmd 中收到以下消息:use of uninitialized $ARGV in concatenation <.> or string at concat.pl line 12

所以我想我做错了什么,$ARGV根本没有使用。另外,$header我应该使用其他东西而不是我来检索文本。

需要一些帮助!

0 投票
7 回答
10453 浏览

java - 在 Java 6 的右手边使用泛型?

我java 6我可以声明arraylist如下

Way1:使用泛型,即<Integer> 在右手边

方式2:使用菱形算子

Way3:仅在左侧使用泛型

我更喜欢使用方式 3 作为它的简介。这些方式有什么区别吗?我们应该更喜欢哪一个,为什么?

更新:-我知道在 java 7 中推荐第二种方式,但我的问题是在 java 6 的上下文中。哪一种更可取?

对我来说,方式 3 还说p 是整数的数组列表(与方式 1 传达的相同)。所以我发现除了IDE显示警告消息之外没有区别:

ArrayList 是一种原始类型。对泛型类型的引用ArrayList<E>应该被参数化

0 投票
2 回答
609 浏览

performance - Perl 效率 - 在 while(<>) 循环内测试 ARGV

当我陈述以下内容时,我的理解是否正确:

在 while(<>) 循环中测试 $ARGV(即文件名)的某些条件会浪费 CPU 周期。首先测试文件名更有效,然后在 while() 循环中相应地处理每一行。这样,它就不会在每次抓取一行数据时重复检查文件名。

或者钻石操作员是否做了一些魔术来使其与后者一样高效?

0 投票
2 回答
124 浏览

java - 如何在 Gmaven 中转义 Java 泛型?

因此,您正在 GMaven 中编写一个带有一些 Java 的 groovy 脚本。在源标签之间:

问题 < 和 > 看起来像 XML 标记组件。有没有办法逃避这些,如果是这样,那是什么?

0 投票
2 回答
473 浏览

java - 这个钻石符号的解释?

从官方 Java JDK1.7 指南中,我得到了这个引用,但我不明白它是如何工作的。谁能解释一下?换句话说,当菱形传递一个空字符串时,它是如何推断出一个 Integer 类型的?

在此示例中,编译器推断泛型类 MyClass 的正式类型参数 X 的类型 Integer。它推断该泛型类的构造函数的形式类型参数 T 的类型 String。

0 投票
2 回答
461 浏览

java - Diamond Operator performance

I'm wondering if there are any known performance differences in terms of the Java 7 diamond operator versus the language construct for previous versions of Java.

Basically, is it faster to use this:

or to use this:

Are they the same speed?

0 投票
4 回答
12293 浏览

java - 在idea ide中获取菱形运算符的编译错误

尝试在idea ide中编译一些简单的源代码时出现此错误。

jdk 是来自 oracle 的 1.7.40

但是这个地方在哪里添加这个“-source 7”选项?

我尝试添加 ide 设置,但没有效果。