Java 映射类型声明差异

Java 映射类型声明差异,java,types,declaration,variable-declaration,Java,Types,Declaration,Variable Declaration,两者之间有什么区别 Map<String, String> exemple = new HashMap<>(); Map example=newhashmap(); 及 Map example=newhashmap(); 关于您的第一句话(前提是末尾有圆括号): 从Java7开始,键和值类型由编译器决定,因此不需要在右边指定参数类型 这段代码可以在JDK7和JDK8上很好地编译 关于你的第二个陈述(前提是你在结尾有圆括号): 在Java6之前,您必须在构建Has

两者之间有什么区别

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

Map example=newhashmap();

关于您的第一句话(前提是末尾有圆括号):

  • 从Java7开始,键和值类型由编译器决定,因此不需要在右边指定参数类型
  • 这段代码可以在JDK7和JDK8上很好地编译
关于你的第二个陈述(前提是你在结尾有圆括号):

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

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

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

Map-example=newhashmap();
在Java7和Java8中,两者之间没有真正的区别。但是,第一个示例在Java7之前的Java版本中无效,因为Java7在Java编译器中引入了有限的类型推断,并且在某些地方不需要显式声明类型参数

如今,大多数IDE都会强调第二种形式的声明涉及不必要的重复。然而,这不是一个错误,它们都声明了完全相同的东西

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