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