是否有以下分配ArrayList中列出
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
謝謝回覆
是否有以下分配ArrayList中列出
ArrayList<String> arrName = new ArrayList<String>();
List<String> arrName = new ArrayList<String>();
謝謝回覆
幾乎總是第二個比第一個更受歡迎。第二個優點是List
的實現可以改變(例如LinkedList
),而不影響其餘的代碼。這與ArrayList
很難做到,不僅因爲您需要將ArrayList
更改爲LinkedList
,而且還因爲您可能使用了ArrayList
的特定方法。
兩條線之間有什麼區別,後者通常只要你只需要一個List
接口以後建議。這就是所謂的「編程接口,而不是實現」。
至於它們之間的詳細區別,我在另外一個問題已經回答#1:The difference between "C c = new C()" and "A c = new C()" when C is a subclass of A in Java
第二種方法通常是因爲它隱藏接口背後的實現較好的。
這意味着,如果需求改變,並且需要另一個接口的實現,您可以只更改一行代碼,其他所有內容仍然可以工作,因爲您編寫的接口不是類。
,沒有太大的差別本身,而是List
應儘可能地使用,因爲它是一個接口,您可以在標準庫方法的參數看,一般List<K>
以便任何特定的實現可以通過,像ArrayList
或LinkedList
。
儘可能地隱藏接口後面的特定實現。 see this
其次是Program to Interface
的示例及其優選方式。
有關詳細信息What does it mean to "program to an interface"?
我昨天和今天之間見過相同的問題(甚至是同一文本)(但找不到它)。 – 2013-02-20 07:51:53
哦,我C感謝 – 2013-02-20 07:53:39
@LuiggiMendoza。即使是我。 – 2013-02-20 07:54:03