【问题标题】:Map type Declaration difference地图类型声明区别
【发布时间】:2015-12-27 16:07:06
【问题描述】:

有什么区别

Map<String, String> exemple = new HashMap<>();

Map<String, String> exemple = new HashMap<String, String>();

【问题讨论】:

    标签: java types declaration variable-declaration


    【解决方案1】:

    嗯,从技术上讲,两者都不是有效的 Java。他们应该是

    Map<String, String> example = new HashMap<>();
    

    Map<String, String> example = new HashMap<String, String>();
    

    这两者在 Java 7 和 8 中没有真正的区别。但是,第一个示例在 Java7 之前的 Java 版本中无效,它在 Java 编译器中引入了有限的类型推断,并明确声明了类型参数在某些地方是不必要的。

    https://docs.oracle.com/javase/8/docs/technotes/guides/language/type-inference-generic-instance-creation.html

    如今,大多数 IDE 都会强调语句的第二种形式,因为它涉及不必要的重复。但是,这不是错误,它们都声明了完全相同的内容。

    【讨论】:

      【解决方案2】:

      关于您的第一个陈述(前提是末尾有圆括号):

      • 从 java 7 开始,编译器的键值类型为inferred,因此您不需要在右侧指定参数类型。
      • 此代码可以在 JDK7 和 8 上很好地编译。

      关于您的第二个陈述(前提是末尾有圆括号):

      • 在 Java6 之前,您必须在构建 HashMap 的右侧显式指定键和值的类型。
      • 此代码可以在 JDK5 及更高版本上很好地编译。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-10-05
        • 1970-01-01
        • 2017-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        相关资源
        最近更新 更多