java 7中的菱形运算符允许以下代码:
List<String> list = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)
但是在Java 5/6中,我可以简单地写:
List<String> list = new LinkedList();
Run Code Online (Sandbox Code Playgroud)
我对类型擦除的理解是这些完全相同.(无论如何,通用都会在运行时删除).
为什么要钻石头呢?它允许哪些新功能/类型安全?如果它没有产生任何新功能,为什么他们将其作为功能提及?我对这个概念的理解是否有缺陷?
我和朋友正在学习Java.我们今天正在研究接口,我们讨论了如何使用接口.
我朋友给我看的示例代码包含:
IVehicle modeOfTransport1 = new Car();
IVehicle modeOfTransport2 = new Bike();
Run Code Online (Sandbox Code Playgroud)
其中IVehicle的是,在这两款车和自行车类实现的接口.定义接受IVehicle作为参数的方法时,可以使用接口方法,当运行代码时,上述对象正常工作.然而,当您按照通常的意愿声明汽车和自行车时,这非常适用:
Car modeOfTransport1 = new Car();
Bike modeOfTransport2 = new Bike();
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是 - 为什么在声明和实例化modeOfTransport对象时,你会使用前一种方法而不是后者?有关系吗?