Unterschiedliche Initialisierungen

Status
Nicht offen für weitere Antworten.

Ravendark

Aktives Mitglied
Was genau ist der Unterschied zwischen folgenden beiden Initialisierungen?
Code:
List<String> x = new ArrayList<String>();
ArrayList<String> y = new ArrayList<String>();
 

andre111

Bekanntes Mitglied
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.
 

Marco13

Top Contributor
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) ...
 

Ravendark

Aktives Mitglied
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.
Klingt einleuchtend, thx für die Antworten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
T Unterschiedliche Datentypen - worin abspeichern? Java Basics - Anfänger-Themen 18
F Falscher Link zum Path? Unterschiedliche Antworten bei Eclipse und VisualStudiocode Java Basics - Anfänger-Themen 5
A Wieso bekomme ich hier zwei unterschiedliche Ausgaben? Java Basics - Anfänger-Themen 6
M Writer für unterschiedliche Obj/inbt/double erstellen? Java Basics - Anfänger-Themen 1
AnnaBauer21 GridBagLayout JLabel weightx: Unterschiedliche Breite mit & ohne Text Java Basics - Anfänger-Themen 6
J Unterschiedliche Ordnerstrukturen trotz gleicher Entwicklungsumgebungen Java Basics - Anfänger-Themen 3
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
F Wie String in unterschiedliche Listen teilen Java Basics - Anfänger-Themen 7
J 2 Arrays vergleichen (Unterschiedliche Längen) Java Basics - Anfänger-Themen 42
F for schleife - stark unterschiedliche Berechnungszeit Java Basics - Anfänger-Themen 30
L Via Interfaces unterschiedliche Klassen ansprechen Java Basics - Anfänger-Themen 8
OnDemand Bindestrich unterschiedliche? Java Basics - Anfänger-Themen 3
O Unterschiedliche Attribute in Objekklasse? Java Basics - Anfänger-Themen 5
J Unterschiedliche Spaltengröße im Grid(bag)layout Java Basics - Anfänger-Themen 6
N Applets: unterschiedliche Java Versionen Java Basics - Anfänger-Themen 7
B Zwei Unterschiedliche Klassen bei Instanzierung Java Basics - Anfänger-Themen 5
S Datentypen Array fill Methode - unterschiedliche Datentypen Java Basics - Anfänger-Themen 6
B Wie kann ich unterschiedliche Datentypen in einem Feld abbilden? Java Basics - Anfänger-Themen 5
M Methode soll zwei unterschiedliche primitives zurückgeben Java Basics - Anfänger-Themen 7
A unterschiedliche Schreibweisen Java Basics - Anfänger-Themen 19
ARadauer String.split -> unterschiedliche längen Java Basics - Anfänger-Themen 2
B Primzahlen berechnen - Wieso unterschiedliche Java Basics - Anfänger-Themen 3
P Servlet unterschiedliche Server Java Basics - Anfänger-Themen 2
T Unterschiedliche Werte beim FileInputStream Lesen Java Basics - Anfänger-Themen 2
G Unterschiedliche Arten jars einzubinden in Eclipse. Warum? Java Basics - Anfänger-Themen 4
A Unterschiedliche Pfade je nach OS? Java Basics - Anfänger-Themen 4
N Unterschiedliche Resultate bei RUN und DEBUG !? Java Basics - Anfänger-Themen 8
O Unterschiedliche Masken Java Basics - Anfänger-Themen 7
V funktionen/Variablen f. unterschiedliche Klassen definierne? Java Basics - Anfänger-Themen 6
M unterschiedliche arten von methoden Java Basics - Anfänger-Themen 4
S Mit line.split() leider unterschiedliche Anzahl von Spalten Java Basics - Anfänger-Themen 19
T Initialisierungen der einzelnen Klassen - Objektorientierung Java Basics - Anfänger-Themen 4
G Warum nur initialisierungen außerhalb von Methoden Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben