为什么变量在 Java 中声明其接口名称?
2022-09-02 20:53:22
这是一个真正的初学者问题(我还在学习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”行。从技术上讲,可以使用“import java.util.*”,但我也不经常看到这种情况,可能是因为“import”行是由某些IDE自动添加的。