2012-10-05 79 views

回答

5

在第一種情況下,你使用listA隱藏列表的執行代碼。

這通常建議,因爲它(幾乎),確保您以後可以更改爲另一種類型的列表,而不必依賴檢查代碼中的其他部分:使用listA代碼不使用任何具體到ArrayList類,但只在List接口中定義了什麼。

11

第一個將列表分配給由其接口接口定義的變量,第二個按類定義變量。

第一個聲明將讓你以後改變實現:

List listA = new LinkedList(); 

是有效的,而第二個不會讓你改變實現:

ArrayList listA = new LinkedList(); // <<<=== INVALID 

值得注意的是開始Java 5 List是一種通用類型,因此您應指定類型參數以提高類型安全性:

List<ClassA> listA = new ArrayList<ClassA>(); 
0

據目前所討論的問題:)

你應該使用接口,而不是具體的類,因爲你可以很容易地在任何時候更改執行

你應該只使用混凝土類時要訪問特定功能

0

這是一樣的,只是參考類型不同而已。

在引用對象時,應該總是使用接口(如List)而不是像ArrayList這樣的具體實現。

相關問題