相关疑难解决方法(0)

Java 7中的钻石运算符有什么意义?

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 generics diamond-operator java-7

438
推荐指数
5
解决办法
14万
查看次数

为什么要声明一个接口然后在Java中用它实例化一个对象?

我和朋友正在学习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对象时,你会使用前一种方法而不是后者?有关系吗?

java oop polymorphism interface

22
推荐指数
4
解决办法
1万
查看次数