Sie sind auf "Generika" gestoßen. Sie werden in dieser guide sehr schön erklärt.
Kurz gesagt, können Sie angeben, welchen Typ eine Speicherklasse, wie List
oder Set
enthält. Wenn Sie Set<String>
schreiben, haben Sie festgestellt, dass dieser Satz nur String
s enthalten muss und wird ein Übersetzungsfehler, wenn Sie versuchen, es etwas anderes in setzen:
Set<String> stringSet = new HashSet<String>();
stringSet.add("hello"); //ok.
stringSet.add(3);
^^^^^^^^^^^ //does not compile
Des Weiteren ein weiteres gutes Beispiel dafür, was Generika tun können ist, dass sie Ihnen näher eine abstrakte Klasse angeben lassen:
public abstract class AbstClass<T extends Variable> {
auf diese Weise werden die Verlängerung Klassen muss nicht Variable
verlängern, aber sie müssen erweitern eine Klasse, die Variable
erstreckt.
Dementsprechend wird ein Verfahren, das ein AbstClass
Griffe können wie folgt definiert werden:
public void doThing(AbstClass<?> abstExtension) {
wo ?
ist ein Platzhalter, dass „alle Klassen, die mit einigen AbstClass
Variable
verlängern“ bedeutet.
@Lars Andren Ok Ich denke, ich habe die Erklärung, warum sollte jemand Generika im Klassennamen verwenden, ich meine, gibt es eine Anwendung, indem Sie es verwenden oder nicht? –
Sie können einem Klassennamen nicht wirklich Generika hinzufügen, aber Sie können dem Klassenheader (Definition) Generika hinzufügen. Die Vorteile der Verwendung sind weniger Güsse und verbesserte Lesbarkeit unter anderen; http://www.angelikalanger.com/GenericsFAQ/FAQSections/ProgrammingIdioms.html#Topic1 –