我正在阅读 Drools Planner 示例,并且经常遇到这样的代码:
List<Column> columnList = new ArrayList<Column>(n);
据我所知,它应该初始化一个长度为 n 的列表,其中存储Column
数据类型。
但拥有又有什么关系呢?不同的集合数据类型在表达式的两侧?
If ArrayList<Column>
类型匹配List<Column>
,它与这样做有何不同:
List<Column> columnList = new List<Column>(n);
List
是一个接口。您无法创建接口的实例。
ArrayList
是一个实现List的类,您可以创建一个。
接口只是定义行为。实现该行为的类和接口实现该行为。
您会注意到,如果您看一下API,许多不同的类实现List
界面。那是因为它们都提供了以下方法的实现:List
定义。此外,这些实现可能大多不同,因为和ArrayList
工作方式不同于,比方说,LinkedList
.
最好使用以下形式
List list = new ListType()
因为如果您愿意,您可以稍后更改列表实现,而不会影响您的代码。这样做的原因是如果你这样做
ListType list = new ListType()
列表的类型是ListType
,这只是一个实例ListType
和子类有。
如果您执行上面显示的首选分配,那么您可以分配anything实现List
to list
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)