Welche Bedeutung hat <E>
über den Code Collection<E>
?Was bedeutet <E> in Sammlung <E>?
Antwort
Es ist die Verwendung von Generika. Überprüfen Sie diese intro aus. Und dann vergessen Sie nicht, diese tutorial zu lesen.
Ein Auszug folgt (die die Verwendung eines Gusses im Vergleich zum Einsatz von Generika vergleicht):
Wenn Sie den Code < Typen sehen>, es als „Typ“ lesen; Die Deklaration über lautet wie "Collection of String c." Der Code mit Generics ist klarer und sicherer. Wir haben eine unsichere Besetzung und eine Reihe von zusätzlichen Klammern eliminiert. Noch wichtiger ist, haben wir Teil der Spezifikation der Methode von einem Kommentar zu seiner Unterschrift bewegten, so kann der Compiler bei der Kompilierung überprüfen, ob die Art Einschränkungen nicht zum Laufe Zeit verletzt werden. Da das Programm ohne Warnungen kompiliert, können wir mit Sicherheit sagen, dass es eine ClassCastException zur Laufzeit nicht werfen wird. Der Nettoeffekt der Verwendung von Generika, insbesondere in großen Programmen, ist verbesserte Lesbarkeit und Robustheit.
Zum Beispiel kann die Schnittstelle einer Liste ist
public interface List<E> {
void add(E x);
Iterator<E> iterator();
}
Dies bedeutet, dass Sie eine Liste, deren Inhalt alle vom gleichen expliziten Typ aufbauen können (nicht nur vom Typ Object), auch wenn Sie Definieren Sie den Typ selbst. Also, wenn Sie einen Namen Klasse erstellen können Sie
List<Name> nameList = new List<Name>();
schreiben und dann füllen Sie es mit Namen Instanzen und direkt Namen Instanzen von ihr abrufen, ohne sich um sie zu werfen oder sonst Sorgen machen, weil Sie immer entweder einen Namen bekommen Instanz oder Null zurück, nie eine Instanz eines anderen Typs.
Noch wichtiger ist, dass Sie in einer solchen Liste nichts anderes als eine Name-Instanz einfügen können, da dies bei der Kompilierung fehlschlägt.
nameList.add(false); //Fails!
nameList.add(new Name("John","Smith")); //Succeeds supposing Name has a
//firstName, lastName constructor
Ich lese 'List
Es bedeutet, dass es sich um eine Sammlung von Elementen mit dem Typ E
handelt. Stellen Sie sich vor, Sie haben eine Tasse Tee. Statt Tee, könnte es auch Kaffee halten, so dass es sinnvoll, die Schale als Gattungs Einheit zu beschreiben, macht:
class Cup<T> { … }
jetzt Sie es füllen könnten, entweder mit Kaffee oder Tee (oder etwas anderes):
Cup<Tea> cuppa = new Cup<Tea>();
Cup<Coffee> foamee = new Cup<Coffee>();
Damit dies funktioniert, müssen sowohl Tea
als auch Coffee
Typen sein, die in Ihrem Programm definiert sind.
Dies ist eine Kompilierungszeitbeschränkung auf Ihrem Code.Wenn aus dem (eher nutzlosen) Becherbeispiel zurückgekehrt wird, enthalten Auflistungen (Arrays, Listen, ...) üblicherweise Elemente vom Typ , z. B.. ganze Zahlen oder Strings. Generics hilft Ihnen, dies in Java auszudrücken:
Beachten Sie den obigen Kompilierfehler? Sie erhalten dies nur, wenn Sie Generika verwenden. Der folgende Code funktioniert auch, aber würde nicht die nette Fehlermeldung geben:
Collection strList = new ArrayList();
strList.add("Foobar"); // Works.
strList.add(42); // Works now. Do we really want this?!
gute Erklärung :) – Johanna
Eine Berührung verwirrend wie die Klasse Cup
@ Lagerdalek: das entkam nicht meine Aufmerksamkeit überhaupt. ;-) In der Tat ist diese Erklärung von diesem inspiriert: http://www.zazzle.com/c_cup_of_t_mug-168503670567870702 –
- 1. Was bedeutet in PHP "<<<"?
- 2. THREE.Camera.prototype.lookAt</ <() - Was bedeutet</ <?
- 3. Java was bedeutet "<<"?
- 4. Php was bedeutet <<<?
- 5. Was bedeutet `<< =` in SBT?
- 6. Was bedeutet << in Python?
- 7. Was bedeutet "<< -" in Ruby?
- 8. Was bedeutet <>?
- 9. Was bedeutet "erwarten << - DONE"?
- 10. Was bedeutet Klasse << selbst?
- 11. Was bedeutet <- in Java?
- 12. Was bedeutet '<? =' In PHP?
- 13. Was bedeutet <- in AI?
- 14. Was bedeutet '</' in JavaScript?
- 15. Control.Category, was bedeutet >>> und <<<?
- 16. Was bedeutet <T extends?
- 17. Was bedeutet "/// <exclude/>"?
- 18. Was bedeutet "x << ~ y" in JavaScript?
- 19. Was bedeutet `<-`, `> -`,` <+`, `> + `in Python?
- 20. Was bedeutet << or > >> in Java?
- 21. Was bedeutet "NSBinarySearchingFirstEqual = (1UL << 8)" in einer Aufzählungsdefinition?
- 22. Was bedeutet das Tag << in JavaScript?
- 23. Was bedeutet class_eval << - "end_eval", __FILE__, __LINE__ in Ruby?
- 24. Was bedeutet "class << self" in Rails?
- 25. Was bedeutet `[< >]` in OCaml?
- 26. Was bedeutet <$> in Haskell?
- 27. Was bedeutet dieses Zeichen "<:" in scala?
- 28. Was bedeutet <a:theme> in OpenXML?
- 29. Was bedeutet $ <und $ @ in Make-Datei
- 30. Was bedeutet Klasse <?> in Java?
Ich brauche Ihre Hilfe, um die Sammlungen besser zu lernen. – Johanna