java - 为什么调用构造函数时不需要泛型类型?

标签 java eclipse generics

我了解围绕泛型的类型删除,但我仍然惊讶地发现这段代码没有生成错误:

public class MyClass {
  private final HashMap<ClassA,ClassB> hashMap;

  public MyClass() {
    this.hashMap = new HashMap<>();
  }
}

大多数情况下,我将 Eclipse 的 Java 标准版本与 Java 1.6 一起使用,并且当我选择自动完成的构造函数名称时,泛型类型会自动填充。我现在使用的是 J2EE 版本的 Eclipse 和 Java 1.7,但它们不是。代码可以编译并且没问题。这是完全多余的信息,所以我不明白为什么需要它。但如果你不必把它放出来,那就感觉不对了。

为什么这不是必需的,或者我在这里完全遗漏了一些东西?

最佳答案

实际上,输入 <> ,你说“嘿,编译器,为我做这些工作并按照声明中的说明填写泛型。”

它的名字是diamond operator对于 Java 7 来说是新的,请参见例如this question on SOofficial tutorial .

如果您写 this.hashMap = new HashMap();相反,编译器应该提示(并且通常会抛出警告)。

关于java - 为什么调用构造函数时不需要泛型类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645474/

相关文章:

java - 在双数组中读取和存储文件内容

java - 如何从输入的文本文件中删除整行

java - 显示导入包的名称,但被划掉

c++ - 尝试通过 Eclipse-AVR 使用 Arduino 的 HardwareSerial

java - 泛型和 Java : how does "extends" work?

java - 从新语言到 C 子集的源代码翻译器

java - 答案对象和面向对象设计

java - android adMob 找不到类

c# - 如何调整 "is a type but is used like a variable"?

ios - 如何将 NSMutableOrderedSet 转换为泛型数组?