在大多数使用集合的Java代码中,我看到了类似的内容。

List<String> list = new ArrayList<String>();

但是我一直想知道为什么它比
ArrayList<String> = new ArrayList<String>();

我研究了一下,但并不能理解很多。

最佳答案

因为当通过其接口使用对象时,您以后可以更改实现。例如:

public ArrayList<String> doSomething(..) {
    ...
    return arrayList;
}

但是过了一会儿,ArrayList似乎对于此方法的调用者最常用的效率低下,因此您决定将其更改为LinkedList
  • 如果您的方法仅返回List,则表示已完成
  • 如果您的方法返回ArrayList,则应转到该方法被调用的所有位置并进行更改。如果有人使用了特定于arraylist的方法,该怎么办-您必须考虑如何重构它。那是个好方案。如果您的代码是库,而其他分支机构/公司正在使用它,则您可能会陷入效率低下的代码中。

  • 也可以看看:
  • What does it mean to "program to an interface"?
  • "Program to an interface". What does it mean?
  • 08-05 07:09