小编典典

为什么将对象分配给接口?

java

我多次听说,在实例化对象时应该执行以下操作:

“接口”名称=新的“类”();

例如,针对实现的类链表List

List<String> name = new LinkedList<String>();

LinkedList 实现许多接口,包括队列,双端队列等。上面的代码和

LinkedList<String> name = new LinkedList<String>();

要么

Queue<String> name = new LinkedList<String>();

为什么必须同时指定两次类型?似乎多余,但oracledocs似乎没有提及。


阅读 215

收藏
2020-11-13

共1个答案

小编典典

LinkedList<String> name = new LinkedList<String>();在Java
7中是多余的。可以将其重写为LinkedList<String> name = new LinkedList<>();

你想写类似的原因:

// Java 7 way:
List<String> name = new LinkedList<>();

如果您改变主意,则可以为您提供以后更改数据收集的自由。这样,您的代码将更加灵活。您应该注意的是,您可以使用的方法仅限于左侧类型(List在这种情况下)。这意味着,如果您使用层次结构中较高的类型(这是Object极端的示例),则可能无法获得所需的所有功能。

2020-11-13