Hallo,
zur Verwendung der verschiedenen Listen (Vor- und Nachteile) habe ich schon einige Beiträge hier im Forum gelesen. Tlw. wird dann auch darauf verwiesen, dass man vorzugsweise gegen eine Schnittstelle (z.B. List) implementieren soll, anstatt gegen die konkrete Klasse (ArrayList, LinkedList, ...).
Nun schreibe ich gerade ein wrapper-Package zu einem Web Service.
Da habe ich eine Methode wie diese geschrieben:
Der Aufrufer bekommt also eine List. Das in der Methode eine LinkedList erzeugt wurde, bleibt ihm verborgen.
Aber die Wahl der konkreten Liste kann doch unter Umständen gravierende Auswirkungen haben (z.B. Performance). Das heißt, dass der Programmierer, der getFriends() verwendet, schon wissen sollte, was die Methode konkret tut (nämlich eine LinkedList erzeugen, die tlw. langsamer als eine ArrayList sein kann).
Deshalb würde ich es in diesem Zusammenhang sinnvoller finden, getFriends eine konkrete Liste (z.B. LinkedList) zurückgeben zu lassen. Dann weiß der Anwender, womit er es zu tun hat.
Oder verstehe ich da etwas falsch?
zur Verwendung der verschiedenen Listen (Vor- und Nachteile) habe ich schon einige Beiträge hier im Forum gelesen. Tlw. wird dann auch darauf verwiesen, dass man vorzugsweise gegen eine Schnittstelle (z.B. List) implementieren soll, anstatt gegen die konkrete Klasse (ArrayList, LinkedList, ...).
Nun schreibe ich gerade ein wrapper-Package zu einem Web Service.
Da habe ich eine Methode wie diese geschrieben:
Java:
public List<Friend> getFriends()
{
List<Friend> friends=new LinkedList<Friend>();
while (..)
{
friends.add(...);
}
...
return friends;
}
Der Aufrufer bekommt also eine List. Das in der Methode eine LinkedList erzeugt wurde, bleibt ihm verborgen.
Aber die Wahl der konkreten Liste kann doch unter Umständen gravierende Auswirkungen haben (z.B. Performance). Das heißt, dass der Programmierer, der getFriends() verwendet, schon wissen sollte, was die Methode konkret tut (nämlich eine LinkedList erzeugen, die tlw. langsamer als eine ArrayList sein kann).
Deshalb würde ich es in diesem Zusammenhang sinnvoller finden, getFriends eine konkrete Liste (z.B. LinkedList) zurückgeben zu lassen. Dann weiß der Anwender, womit er es zu tun hat.
Oder verstehe ich da etwas falsch?