关于java:在ArrayList之前声明List

Declaring a List before an ArrayList

本问题已经有最佳答案,请猛点这里访问。

在本声明中,List MyList = new ArrayList();

为什么要将mylist声明为string类型的列表。只是让mylist成为arraylist类型字符串的新实例?

似乎没有必要。


为了解释Joshua Bloch的有效Java的第52项,使用接口而不是类使周围的代码更加灵活。因此,如果您想将MyList更改为类似向量的东西,那么根本不需要更改周围的代码。布洛赫接着说,某些时候,比如Java的主要更新,当其他类型的列表被更新为有效时,或者完全添加新的列表。


List只是一个接口,而不是一个实现。有许多不同类型的列表,如ArrayListLinkedList

因此,如果您声明MyList一个List,它可能是任何类型的List,正如@espertus所说,您可以在未来更改MyList列表的类型,而不必更改它的声明。


声明MyListList类型保证您不会使用仅适用于ArrayList的方法。这样,您就可以在将来更改声明的右侧。