Wo ist der Unterschied (ArrayList in Java mit leeren <>)

Kanser

͊͐̋͊́̀̈́̽̈́̓͑͑
Registriert
5 Aug. 2013
Beiträge
72
Hallo leute,
Ich weis mehr oder weniger darüber bescheit weshalb es Generics in Java gibt aber volgendes ist mir nicht klar.
Gibt es einen Unterschied (wenn ja, dann was für eins?) zwischen:

ArrayList<String> sList = new ArrayList<>();
//und
ArrayList<String> sList = new ArrayList<String>();


Oder ist das nur eine andere schreibweise für dass selbe?
In den meisten Bespielen die ich fand wurde einfach das Zweite verwendet aber nur algemein erläuter wozu Generics gut sind, es wird aber nie auf den unterschied zum ersten Fall.
 
Ich bin kein Java-Entwickler, aber in C# gäbe es nur die Variante ArrayList<String> sList = new ArrayList<String>(); Die andere Variante scheitert bereits am Compiler.
Wenn Du den Typ mit string festlegst, weiss der Compiler, dass er nur strings zulassen darf. Das erhöht die Ausführungsgeschwindigkeit. Entweder ist die andere Variante nur eine abgekürzte Schreibweise, oder es wird mehr als string zugelassen ?!
 
  • Thread Starter Thread Starter
  • #3
Der Compiler lässt es durch, ich vermute auch stark dass es eine Abkürzung ist bin mir aber unsicher.
 
Na, dann probiere doch mal bei der fraglichen Variante, der Liste einen Int-Wert zuzuweisen ;)
 
Zwischen den beiden gibt es im Endeffekt für dich keinen Unterschied. Der Compiler kümmert sich darum, dass es "gleich" übersetzt wird.
[src=java]ArrayList<String> sList = new ArrayList<String>();[/src]
Diese Variante ist die ältere und war in älteren Java-Versionen (< 7) zwingend notwendig, wohingegen die kürzere erst in neueren (>= 7) möglich wurde.
[src=java]ArrayList<String> sList = new ArrayList<>();[/src]

Die zweite Variante ist schlicht eine Vereinfachung, syntaktischer Zucker sozusagen.
 
Zurück
Oben