Auf einer sehr abstrakten Ebene weiß ich, dass Wrapper-Klassen, ein Objekt des primitiven Datentyps erstellen, aber ich war neugierig, warum wir Wrapper-Klassen verwenden müssen und welche Vorteile sie bieten über primitive Datentypen an.Vorteile der Verwendung von Wrapper-Klassen gegenüber Primitiven in Java
Antwort
Sammlungen an erster Stelle, zum Beispiel List<Integer>
, können Sie nicht primitive int
hier verwenden. Eigentlich jede generische Klasse/Schnittstelle, die mit verschiedenen Objekttypen wie
public interface Callable<V> {
V call() throws Exception;
}
Hinweis arbeiten können, dass Verpackung am besten nicht mit neuen Integer erfolgt (i) aber Integer.valueOf (i) die letztere wird versuchen, Cache zu verwenden. Das Entpacken erfolgt als Integer.intValue(). Diese Verpackung/Abwickeln von Primitiven sind so typische Operationen, die Java 5 Autoboxing eingeführt/Unboxing
List<Integer> list = new ArrayList<>();
list.add(1);
int i = list.get(0);
dieser Code wird automatisch konvertiert von Java-Compiler in
list.add(Integer.valueIf(1));
int i = list.get(0).intValue(); // this is where NullPointerException sometimes happens
Ein Wrappertyp ermöglicht es einem Primitiv, mehr Kontextbedeutung zu haben. Zum Beispiel kann eine ganze Zahl alles sein, während eine Klasse mit dem Namen Stunden zum Beispiel die Zahl Bedeutung gibt, wo immer sie verwendet wird.
Sie ermöglichen auch das Schreiben von Methoden, die das genannte Primitiv auf konsistente und naheliegende Weise zu Verbrauchern mutieren. Weitere Informationen zu diesem Punkt finden Sie unter Domain Driven Design.
Also würde Es genügt zu sagen, dass Wrapper keine bessere Leistung als der primitive Datentyp bietet, es fügt nur eine kontextuelle Bedeutung zu einem Datentyp hinzu? – veepsk
Die primitiven Typen nur Wert halten, die Wrapper-Klasse gibt ihm einen Namen.
Mit einem Klassennamen kann der Compiler statische Prüfungen für Sie durchführen. Es macht die Schnittstelle sinnvoller. Und Sie können auch eine Methode in Wrapperklassen definieren, um die primitiven Werte zu validieren.
Normalerweise, für ein kleines Projekt, denke ich, verwenden primitive Typen ist in Ordnung.
Wrapper-Objekte sind normale Objekte und ihre Referenzen können null
sein. Dies ermöglicht die Verwendung eines Zustands "nicht gesetzt", der mit Grundelementen unmöglich ist.
Integer no = null; // not set
Sie müssen einen magischen Wert wie -1 verwenden, um anzugeben, dass eine primitive Variable "nicht gesetzt" ist.
Wrapper-Klassen wurden entwickelt, um den primitiven Typen mehr Funktionalität hinzuzufügen, sodass sie mit generischem Code kompatibel sind und das Collection Framework und viele andere Vorteile nutzen. Sie sind jedoch nicht zu ersetzen primitive Typen.
Daher sollten Sie Wrapper nur bei Bedarf verwenden, z. B. beim Umgang mit Generika, da das Erstellen eines Objekts erhebliche Mehrkosten für Ihr Programm verursacht. Im Normalfall sollten Sie also bei Primitiven bleiben.
Stellen Sie sich vor: Sie spielen ein Spiel, in dem Sie den Status speichern müssen und Sie möchten auf einem anderen Computer spielen (gleiches Spiel), dann haben Sie sich entschieden, den Status (Level) auf den anderen Computer zu nehmen Zustand (nicht von Anfang an). Okay, komm zu den Fragen, wenn dein aktueller Waffenstatus 3 ist. wie {int waffen = 1; if (Sie fügen Waffen hinzu, indem Sie einige Level spielen, jetzt ist es 3)}, aber Sie können es nicht als Objekt speichern, da die Grundelemente anders sind (lebt im Stapel).also brauchst du Waffen als Objekte ( ) Integer weapon = new Ganzzahl (1) {...}
- 1. Vorteile von Parcelable gegenüber JSON
- 2. Vorteile von MemoryPoolMXBean.getUsage() gegenüber Runtime.freeMemory()
- 3. Vorteile von MySQL gegenüber MySQL
- 4. Vorteile von abstrakten Methoden gegenüber Methodenüberschreibung
- 5. Groovy Vorteile gegenüber Jython oder Jruby?
- 6. Vorteile der Verwendung von IEquatable
- 7. Welche Vorteile bietet Spring Data neo4j gegenüber der direkten Verwendung von neo4j?
- 8. Vorteile der Verwendung von Rhino (Mozilla Nashorn)
- 9. Was sind die Vorteile bei der Verwendung von Qt?
- 10. Vorteile der Verwendung von directoryperdb in MongoDB
- 11. Vorteile der Verwendung von NullWritable in Hadoop
- 12. Welche Vorteile hat Scala gegenüber Java für die gleichzeitige Programmierung?
- 13. Bietet Pthreads irgendwelche Vorteile gegenüber GCD?
- 14. Vorteile und Nachteile der Verwendung von Java RMI
- 15. Vorteile der Verwendung mehrerer Schemas?
- 16. Vorteile der Verwendung von ScalaFutures von ScalaTest vs. Await.result
- 17. Reactjs: Gibt es Vorteile bei der Verwendung von React-Komponenten gegenüber normalen Funktionen?
- 18. Was sind die Vorteile/Vorteile der Verwendung von Python 3?
- 19. ado.net Datendienst Vorteile/Nachteile gegenüber WCF-Dienst
- 20. Was sind die Vorteile von concurrent.futures gegenüber Multiprocessing in Python?
- 21. Vorteile/Nachteile der Verwendung von MySQL-Triggern
- 22. Vorteile der Verwendung von EncodePointer/DecodePointer
- 23. Vorteile der Verwendung von URLField über TextField?
- 24. Vorteile von jQuery Widget gegenüber regulären JS-Objekt?
- 25. Vorteile der Verwendung von cql über Sparsamkeit
- 26. Vorteile der Verwendung von Std :: Funktion
- 27. Vorteile der Tag-Dispatching-Funktion gegenüber normaler Übersteuerungsauflösung
- 28. Welche Vorteile bietet Sass gegenüber normalem CSS?
- 29. Wenn wir Wrapperklassen haben, warum werden Primitive unterstützt?
- 30. Vorteile der Verwendung eines Konstruktors?
Du kannst einen Blick auf http://stackoverflow.com/questions/1570416/ werfen when-to-use-wrapper-class-und-primitive-type und http://stackoverflow.com/questions/2509025/when-to-use-primitive-and-when-reference-types-in-java – Swapnil