2012-04-12 19 views
5

Wie wäre eine C# .net generische Liste in Java?Etwas Ähnliches wie C# .NET Generische Liste in Java

somthing wie folgt aus:

public class ClientList : List<Client> { } 

die Antwort von Nikil war perfekt, ich nur noch hinzufügen wollen, wer will eine Klasse aus der Liste erstellen:

public class ClientList extends ArrayList<Client> 

Antwort

13

Java-Liste Schnittstelle (java.util.List) kann generisch sein. Mit anderen Worten, Instanzen von List können einen Typ erhalten, sodass nur Instanzen dieses Typs in diese Liste eingefügt und gelesen werden können. Hier ein Beispiel:

List<String> list = new ArrayList<String>(); 

Diese Liste ist nur auf String-Instanzen ausgerichtet, dh nur String-Instanzen können in diese Liste eingefügt werden. Wenn Sie versuchen, etwas anderes in diese Liste zu schreiben, wird der Compiler sich beschweren.

Die generischen Typprüfungen existieren nur zur Kompilierzeit. Zur Laufzeit ist es möglich, Ihren Code so zu optimieren, dass eine String-Liste andere Objekte enthält, in die String eingefügt wurde. Dies ist jedoch eine schlechte Idee.

Zugriff auf eine generische Liste

Sie können die Elemente einer generischen Liste wie diese erhalten und einfügen:

List<String> list = new ArrayList<String>(); 

String string1 = "a string"; 
list.add(string1); 

String string2 = list.get(0); 

Beachten Sie, wie es nicht notwendig ist, das Objekt aus der Liste erhalten zu werfen. get() Methodenaufruf, wie es normalerweise notwendig ist. Der Compiler weiß, dass diese Liste nur String-Instanzen enthalten kann, daher sind Umsetzungen nicht notwendig.

Iterieren eine generische Liste

Sie können eine generische Liste mit einem Iterator iteriert, wie folgt aus:

List<String> list = new ArrayList<String>(); 

Iterator<String> iterator = list.iterator(); 

while(iterator.hasNext()){ 
    String aString = iterator.next(); 
} 

Beachten Sie, wie es nicht notwendig ist, um das Objekt zu werfen, das von dem iterator.next() nächster Anruf. Da die Liste generisch ist (hat einen Typ), weiß der Compiler, dass er String-Instanzen enthält. Daher ist es nicht notwendig, die daraus gewonnenen Objekte zu werfen, selbst wenn sie von ihrem Iterator stammen.

Sie können auch die neue for-Schleife wie folgt verwenden:

List<String> list = new ArrayList<String>(); 

for(String aString : list) { 
    System.out.println(aString); 
} 

Beachten Sie, wie ein String-Variable in den Klammern der for-Schleife deklariert wird. Für jede Iteration (jedes Element in der Liste) enthält diese Variable das aktuelle Element (aktuelle Zeichenfolge).

Verwandte Themen