Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Bei x kannst du nur die in List definierten Funktionen aufrufen, auch wenn x intern eine ArrayList ist. Bei y kannst du die Funktionen von List und ArrayList aufrufen.
Durch diese Antwort wird IMHO etwas falsches suggeriert: Das klingt vielleicht, als wäre y "besser". Ist es aber NICHT. Man sollte immer (immer immer immer wenn das möglich ist) die erste Variante vorziehen, also
List<String> x = new ArrayList<String>();
Wenn man das macht, kann man später problemlos eine andere Implementierung verwenden, z.B.
List<String> x = new LinkedList<String>();
ohne dass sich am restlichen Programm was ändert.
Noch deutlicher wird das, wenn man eigene Methoden schreibt. Als Faustregel kann man sagen, dass man NUR das einfordern sollte, was man unbedingt braucht. Eine Methode
Code:
String concat(ArrayList<String> x)
{
String s = "";
for (String e : x) s+=e;
return s;
}
kann man NUR mit einer ArrayList aufrufen, obwohl sie eigentlich mit jeder List funktionieren würde - und sogar mit jeder beliebigen anderen Collection! Also würde man sie eher deklarieren als
String concat(List<String> x) ...
oder och besser als
String concat(Collection<String> x) ...
oder gleich
String concat(Iterable<String> x) ...
die erste Variante vorziehen, also
List<String> x = new ArrayList<String>();
Wenn man das macht, kann man später problemlos eine andere Implementierung verwenden, z.B.
List<String> x = new LinkedList<String>();
ohne dass sich am restlichen Programm was ändert.