2013-02-20 20 views
5

是否有以下分配ArrayList中列出

ArrayList<String> arrName = new ArrayList<String>(); 
List<String>  arrName = new ArrayList<String>(); 

謝謝回覆

+0

我昨天和今天之間見過相同的問題(甚至是同一文本)(但找不到它)。 – 2013-02-20 07:51:53

+0

哦,我C感謝 – 2013-02-20 07:53:39

+0

@LuiggiMendoza。即使是我。 – 2013-02-20 07:54:03

回答

3

幾乎總是第二個比第一個更受歡迎。第二個優點是List的實現可以改變(例如LinkedList),而不影響其餘的代碼。這與ArrayList很難做到,不僅因爲您需要將ArrayList更改爲LinkedList,而且還因爲您可能使用了ArrayList的特定方法。

2

第二種方法通常是因爲它隱藏接口背後的實現較好的。

這意味着,如果需求改變,並且需要另一個接口的實現,您可以只更改一行代碼,其他所有內容仍然可以工作,因爲您編寫的接口不是類。

2

,沒有太大的差別本身,而是List應儘可能地使用,因爲它是一個接口,您可以在標準庫方法的參數看,一般List<K>以便任何特定的實現可以通過,像ArrayListLinkedList

2

儘可能地隱藏接口後面的特定實現。 see this