通常,我们使用代码进行接口:
List<String> list = new ArrayList<String>();
我们可以写以下内容吗?
AbstractList<String> list = new ArrayList<String>();
这种特定的初始化有什么缺点?任何见解将不胜感激。
最佳答案
将列表定义为AbstractList
会将您的实现绑定到AbstractList
的子类,而使用List
接口允许您将的任意实现分配给list
变量。
将列表定义为AbstractList
还将使您(无需强制转换)访问AbstractList
的方法,这些方法不属于List
接口,但是使用它们会使代码的灵活性降低。
如果您没有很好的理由这样做,请不要这样做。