Zil*_*ilk 17 java variables interface declaration
这是一个真正的初学者问题(我还在学习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"行.
Meh*_*ari 21
当你读
List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
你明白你所关心的只是一个List<String>,你不太重视实际的实现.此外,您将自己限制为声明的成员List<String>而不是特定的实现.你不关心你的数据是存储在一个线性数组还是一些奇特的数据结构中,只要它看起来像一个List<String>.
另一方面,阅读第二行可以让您了解代码关注的是变量ArrayList<String>.通过写这个,你隐含地(对未来的读者)说你不应该盲目地改变实际的对象类型,因为其余的代码依赖于它真的是一个事实ArrayList<String>.
| 归档时间: |
|
| 查看次数: |
6045 次 |
| 最近记录: |