通常,我们使用代码进行接口:

List<String> list  = new ArrayList<String>();


我们可以写以下内容吗?

AbstractList<String> list  = new ArrayList<String>();


这种特定的初始化有什么缺点?任何见解将不胜感激。

最佳答案

将列表定义为AbstractList会将您的实现绑定到AbstractList的子类,而使用List接口允许您将的任意实现分配给list变量。

将列表定义为AbstractList还将使您(无需强制转换)访问AbstractList的方法,这些方法不属于List接口,但是使用它们会使代码的灵活性降低。

如果您没有很好的理由这样做,请不要这样做。

08-18 13:23