列表与数组列表作为引用类型?
好的,所以我知道,并且是接口,但是是什么让第一行代码比第二行更好?Set
List
Map
List myArr = new ArrayList();
ArrayList myArr = new ArrayList();
好的,所以我知道,并且是接口,但是是什么让第一行代码比第二行更好?Set
List
Map
List myArr = new ArrayList();
ArrayList myArr = new ArrayList();
如果你使用第一种形式,你是说你将要使用的只是界面的功能 - 没有别的,特别是没有任何额外的实现。这意味着您可以轻松更改所使用的实现(例如,在实例化中仅替换),而不必担心它会破坏代码的其余部分,因为您可能已经使用了特定于 .List
LinkedList
ArrayList
ArrayList
关于编程中类型的一个有用的一般原则(有时称为健壮性原则)如下:
List比ArrayList更自由,因为List可以是任何类型的List实现,例如ArrayList,LinkedList或FrancosSpecialList。因此,保持自由并接受任何类型的列表是一个好主意,因为您可能希望稍后更改实现。
显式使用 ArrayList 作为类型的主要原因(第二种情况)是,如果您需要使用特定于 ArrayList 的方法,而这些方法无法通过 List 接口获得。在这种情况下,通用列表将不起作用(除非你想做很多丑陋和令人困惑的转换),所以你不妨显式地直接使用ArrayList。这有一个额外的好处,即向读者暗示需要ArrayList的特定功能。