List<String> c = new ArrayList<String>();
我不明白为什么他们这样做,我的意思是他们可以使用,
List<String> c=new List<String>();
OR
ArrayList<String> c=new List<String>();
这种语法的用法是什么以及如何使用它......
答案 0 :(得分:1)
我们有一个List接口实际上很好。这样我们可以选择使用不同类型的列表(ArrayList,linkedlist等)并继承其中的常用方法。
例如,每个列表都需要添加和删除方法。但根据列表,实施将有所不同。 ArrayList将以不同于LinkedList的方式添加项目。
因此,List接口可以帮助Java编码器抽象列表之间的公共细节,这些列表稍后会有不同的实现。
我希望这会有所帮助。
答案 1 :(得分:0)
你可以这样看待它。接口List
提供了每个列表实现的常用方法,而像ArrayList
这样的具体类型提供了列表如何运行的特定行为。
因此,List<String> c = new ArrayList<String>();
表示List
的一般String
个,其中包含add()
,clear()
和get()
等方法,但其行为类似ArrayList
。
使用这样的interface
可以在运行时切换该列表的行为。这意味着你可以这样做:
List<String> list = new ArrayList<String>();
list = new LinkedList<String>();
如果您从一开始就将list
声明为ArrayList
,则无法做到这一点。
ArrayList<String> list = new ArrayList<String>();
list = new LinkedList<String>();
这将生成编译器错误Type mismatch: cannot convert from LinkedList<String> to ArrayList<String>
。
为了更具技术性,interface
定义了一个&#34;契约&#34;,这意味着实现该接口的每个类都必须提供其定义的方法。因此,如果您使用接口,则可以确保实现它的任何创建对象具有相同的常用方法,因为它们必须提交到&#34;合同&#34;。但是,该对象的行为以及提供的方法如何实现完全取决于您。