2013-07-09 44 views
1

最近我一直在閱讀很多Android項目的代碼以獲得更多的理解。我看到的其中一件事是ArrayList實例化的兩種不同方式。爲什麼要爲List對象進行向上轉換? Android/Java語法

請注意這裏顯示的這兩個示例。爲什麼有些人會使用示例1,爲什麼要用示例2來做呢?它們之間的主要區別是什麼?

我理解Java中的向上轉換和向下轉換的概念,並且在這種特殊情況下沒有看到任何優勢。如果你要創建一個arrayList,爲什麼不從一開始就把它存儲在一個ArrayList變量中?

我一直使用例2創建一個新的ArrayList的方式。我不明白什麼是用什麼例子所示的優點1

看起來更多的程序員使用示例1路

例1,使用上溯造型成父變量的

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

實施例2

ArrayList<String> list = new ArrayList<String>(); 

回答

1

List接口等不能實例it..You有用其具體實現例如ArrayList來實例化。

是否使用ListArrayList完全取決於在正在使用它的背景下..

如果你想要一個ArrayList,你應該用一個ArrayList實例它雖然


上溯造型通常執行爲的可重用性的一種方法,通常自動完成。

考慮這種方法OD排序列表

public void sort(ArrayList lst); 

只能通過排序此method.So如果要排序的LinkedList對象的ArrayList你就必須創建的LinkedList參數的另一種方法

現在考慮這個方法

public void sort(List lst); 

現在,您可以重用通過傳遞類的對象這個方法實現List interface..So,你現在可以排序ArrayListLinkedListStackVector使用這種相同的方法..因此,你現在正在重複使用這種相同的方法來排序實現列表接口

+0

不同的類沒有真正回答OP的問題(以及示例/情況考慮)。 – Rajesh

+0

這個答案很好,因爲現在我明白了爲什麼使用List變量而不是ArrayList,並且可重用性的好處是一個很好的參數。 – Kevik

+0

@Rajesh很好catch..edited ans – Anirudha

相關問題