當你問「這究竟是什麼意思?」時,我並不是100%確定你的意思,但這裏是一個猜測。
考慮這樣的代碼:
interface Interface
{
void foo();
}
class Implementation
implements Interface
{
public void foo() { }
public void bar() { }
}
public class Main
{
public static void main(final String[] argv)
{
Interface a;
Implementation b;
a = new Implementation();
b = a;
a.foo();
b.foo();
a.bar(); <- won't compile
b.bar();
}
}
接口一個;和實施b;都指向相同的對象,但只有對「b」的引用才能訪問「bar」方法。
因此,在你的例子中,List接口中的任何方法都可以被arrList和linList訪問,但是除了List接口之外,它們提供的任何方法都不會被調用,而不需要強制轉換。你可以(也應該在大多數情況下)把ArrayList和LinkedList當作List來處理。
對於從不同列表中插入/添加/刪除的細節,您通常不應該在意。從最終結果的角度來看,兩者的行爲方式都是相同的(例如,使用相同數據的同一系列方法調用會得到相同結果,只是內部佈局會不同)。
看看這個非常相似的問題。http://stackoverflow.com/questions/322715/when-to-use-linkedlist-over-arraylist – Psyrus