这是一个真正的初学者问题(我还在学习Java基础知识).
我可以(有点)理解为什么方法会返回List <String>而不是ArrayList <String>,或者为什么它们会接受List参数而不是ArrayList.如果它对方法没有影响(即,如果不需要ArrayList中的特殊方法),这将使该方法更灵活,更容易用于调用者.其他集合类型也是如此,例如Set或Map.
我不明白的是:通常的做法是创建这样的局部变量:
List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
虽然这种形式不太常见:
ArrayList<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
这有什么好处?
我只能看到一个小缺点:必须添加java.util.List的单独"import"行.从技术上讲,可以使用"import java.util.*",但我也不经常看到,可能是因为某些IDE自动添加了"import"行.
public class Foo : IFoo
...
Run Code Online (Sandbox Code Playgroud)
有什么区别
IFoo foo = new Foo();
Run Code Online (Sandbox Code Playgroud)
和
Foo foo = new Foo();
Run Code Online (Sandbox Code Playgroud)