什么时候在声明变量/参数时使用 ArrayList 或 LinkedList 而不是 List 是正确的?

Eri*_*118 5 java

假设你有一个类似的类:

public class foo {
    private List<String> fooThings;

    public void doSomething(List<String> things) {
        // Do a bunch of things here
        // Possibly setting fooThings at some point as well
    }
}
Run Code Online (Sandbox Code Playgroud)

声明指定具体类(例如 ArrayList 而不是 List 接口)是否合适?如果有,什么时候?

编辑> 这个问题与何时使用 LinkedList 以及何时使用 ArrayList 无关。这是一个单独的问题,在别处回答。问题是为了清楚起见,何时声明应该是接口(List),何时应该指定一个实现,例如 ArrayList,因为考虑到方法将要做什么或如何利用实例变量,这很重要。

JNY*_*ger 4

通常您应该只使用接口List来声明您的结构。但是,在极少数情况下,您需要使用仅适用于特定实现的特定方法,List例如LinkedList,或者ArrayList您应该显式声明您的列表类型。然而,这限制了灵活性,应该谨慎行事。