Was sind die verschiedenen Möglichkeiten, ein Objekt in Java zu erstellen?
Hatte ein Gespräch mit einem Kollegen neulich über diese.
Es ist offensichtlich, das ist die Verwendung eines Konstruktors, aber welche anderen Möglichkeiten gibt es?
InformationsquelleAutor der Frage Mike Deck | 2008-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es gibt vier verschiedene Möglichkeiten zum erstellen von Objekten in java:
Eine. Mit
new
StichwortDies ist der häufigste Weg, um ein Objekt zu erstellen in java. Fast 99% der Objekte sind auf diese Weise erstellt.
B. Mit
Class.forName()
Wenn wir wissen, dass der name der Klasse, die & wenn es einen öffentlichen default-Konstruktor erzeugen wir ein Objekt in dieser Art und Weise.
C. Mit
clone()
Die clone() kann verwendet werden, um erstellen Sie eine Kopie eines bestehenden Objekts.
D. Mit
object deserialization
Objekt-Deserialisierung ist nichts anderes als das erstellen eines Objekts aus seiner serialisierten form.
Können Sie Lesen aus hier
InformationsquelleAutor der Antwort kamaci
Gibt es verschiedene Möglichkeiten:
Class.newInstance
.Constructor.newInstance
.Object.clone
(nicht, rufen Sie einen Konstruktor).new
für Sie.String
s)....
) - Methode aufrufen, (die keinen Konstruktor für arrays).throw null;
oder"".toCharArray()[0]
.new
Schlüsselwort als gut.InformationsquelleAutor der Antwort Tom Hawtin - tackline
Innerhalb der Java-Sprache, der einzige Weg, um ein Objekt zu erstellen ist, indem Sie Ihren Konstruktor aufrufen, sei es explizit oder implizit. Mit der spiegelung der Ergebnisse in einem Aufruf der Konstruktor-Methode, der Deserialisierung verwendet reflektion, um den Konstruktor aufrufen, factory-Methoden wickeln Sie den Aufruf der Konstruktor der abstrakten zum konkreten Aufbau und Klonen ist ebenfalls eine wrapped-Konstruktor-Aufruf.
InformationsquelleAutor der Antwort Confusion
Ja, Sie können Objekte erstellen, unter Verwendung von reflektion ab. Zum Beispiel
String.class.newInstance()
geben Sie ein neues, leeres String-Objekt.InformationsquelleAutor der Antwort Thomas Lötzer
Klonen und Deserialisierung.
InformationsquelleAutor der Antwort Bill the Lizard
Du kannst auch
InformationsquelleAutor der Antwort Vincent Ramdhanie
Sollte dies bemerkt werden, wenn Sie neu in java verfügt jedes Objekt geerbt von Objekt
protected native Object clone() throws CloneNotSupportedException;
InformationsquelleAutor der Antwort stacker
Können, können Sie auch de-serialisieren Daten in ein Objekt. Diese gehen nicht durch den Konstruktor der Klasse !
AKTUALISIERT : Danke Tom für den Hinweis in Ihrem Kommentar ! Und Michael auch experimentiert.
Bitte siehe Tom ' s Antwort für eine komplette Behandlung aller Fälle 😉
gibt es eine andere Möglichkeit der Erzeugung eines Objekts ohne Verwendung von "new" - Schlüsselwort in java
InformationsquelleAutor der Antwort KLE
Andere Möglichkeiten, wenn wir erschöpfend.
anewarray
multianewarray
newarray
odernew
. Diese können Hinzugefügt werden, mithilfe von Bibliotheken wie ASM oder BCEL. Eine version von bcel ist im Lieferumfang von Oracle ist Java. Wieder diese nicht an einem Konstruktor, aber Sie können rufen Sie einen Konstruktor wie eine seperate nennen.InformationsquelleAutor der Antwort Peter Lawrey
Es ist eine Art von Objekt, die nicht konstruiert werden, durch die normale Instanz Schaffung von Mechanismen (Aufruf von Konstruktoren): Arrays. Arrays werden erstellt mit
oder
Als Sean sagte in einem Kommentar, dieser ist syntaktisch ähnlich wie ein Konstruktor-Aufruf und intern ist es nicht viel mehr als die Zuteilung und die null-Initialisierung (oder initialisieren mit expliziten Inhalten, im zweiten Fall) ein Speicher-block, mit einigen-header zur Angabe der Art und der Länge.
Beim übergeben von Argumenten an eine varargs-Methode, die ein array wird dort angelegt (und gefüllt) implizit, zu.
Eine vierte Möglichkeit wäre
Natürlich, Klonen und Deserialisieren funktioniert auch hier.
Gibt es viele Methoden, die in der Standard-API, das erstellen von arrays, aber Sie alle in der Tat sind Sie mit einem (oder mehreren) von diesen Möglichkeiten.
InformationsquelleAutor der Antwort Paŭlo Ebermann
Gibt es fünf verschiedene Möglichkeiten, um ein Objekt zu erstellen in Java,
1. Mit
new
Stichwort → Konstruktor aufgerufen2. Mit
newInstance()
Methode derClass
→ Konstruktor aufgerufenEs kann auch geschrieben werden als
3. Mit
newInstance()
Methode derConstructor
→ Konstruktor aufgerufen4. Mit
clone()
Methode → keine Konstruktor-Aufruf5. Mit der Deserialisierung → keine Konstruktor-Aufruf
Ersten drei Methoden
new
Schlüsselwort und beidenewInstance()
enthalten einen Konstruktor aufrufen, aber später zwei Klon-und Deserialisierung Methoden, Objekte erstellen, ohne Aufruf des Konstruktors.Alle oben genannten Methoden haben unterschiedliche bytecode mit Ihnen verbunden sind, Lesen Sie Verschiedene Möglichkeiten zum erstellen von Objekten in Java mit Beispiel für Beispiele und genauere Beschreibung z.B. der bytecode-Konvertierung von alle diese Methoden.
Allerdings kann man argumentieren, dass die Erzeugung eines array-oder string-Objekt ist auch ein Weg, der Sie das Objekt erstellen, aber diese Dinge sind für einige Klassen nur behandelt und direkt von der JVM, während wir erstellen kann Objekt jeder Klasse mit diesen 5 Möglichkeiten.
InformationsquelleAutor der Antwort Naresh Joshi
Reflexion:
InformationsquelleAutor der Antwort John Meagher
Reflexion wird auch der job für Sie tun.
ist ein weiterer Weg, um erstellen Sie eine neue Instanz einer Klasse. In diesem Fall müssen Sie auch, die Ausnahmen zu behandeln, die möglicherweise geworfen.
InformationsquelleAutor der Antwort ryanprayogo
new
Betreiber (also der Aufruf eines Konstruktors)clazz.newInstance()
(die wiederum ruft den Konstruktor). Oder durchclazz.getConstructor(..).newInstance(..)
(wieder mit einem Konstruktor, aber so können Sie wählen, welche)Zusammenfassung der Antwort - Haupt-Weg, - durch aufrufen des Konstruktors der Klasse des Objekts.
Update: eine Andere Antwort aufgeführt zwei Möglichkeiten, die nicht verbunden mit einem Konstruktor - deseralization und Klonen.
InformationsquelleAutor der Antwort Bozho
Können Sie auch Klonen vorhandenen Objekt (wenn es implementiert Cloneable).
InformationsquelleAutor der Antwort Roman
Gibt es FÜNF verschiedene Möglichkeiten zum erstellen von Objekten in Java:
1. Mit `new` Schlüsselwort:
Dies ist der häufigste Weg, um ein Objekt zu erstellen in Java. Fast 99% der Objekte sind auf diese Weise erstellt.
2. Durch Die Verwendung Von Factory-Methode:
Beispiel:
3. Durch Die Verwendung Von Cloning-Konzept:
Mithilfe
clone()
dieclone()
können verwendet werden, um erstellen Sie eine Kopie eines bestehenden Objekts.4. Mit `Klasse.forName()`:
Wenn wir wissen, dass der name der Klasse, die & wenn es einen öffentlichen default-Konstruktor erzeugen wir ein Objekt in dieser Art und Weise.
Beispiel:
5. Mit dem Objekt-Deserialisierung:
Objekt-Deserialisierung ist nichts anderes als das erstellen eines Objekts aus seiner serialisierten form.
InformationsquelleAutor der Antwort K.V.Subrahmanya Reddy
Von einem API-Benutzer-Perspektive, eine alternative zu Konstruktoren sind static factory-Methoden (wie BigInteger.valueOf()), aber für die API-Autor (und technisch "for real") der Objekte sind noch angelegt, mit einem Konstruktor.
InformationsquelleAutor der Antwort Fabian Steeg
Methode 1
Mithilfe der neuen keyword. Dies ist der häufigste Weg, um ein Objekt zu erstellen in java. Fast 99% der Objekte sind auf diese Weise erstellt.
Methode 2
Mit Klasse.forName(). Klasse.forName() liefert das class-Objekt, was nützlich ist, für die Reflexion. Die Methoden, die dieses Objekt definiert sind, die von Java, nicht von dem Programmierer das schreiben der Klasse. Sie sind die gleichen für jede Klasse. Aufruf von newInstance() auf, gibt Sie eine Instanz der Klasse (also callingClass.forName("ExampleClass").newInstance() entspricht dem Aufruf von new ExampleClass()), auf der Sie die Methoden aufrufen, die die Klasse definiert, Zugriff auf die sichtbaren Felder etc.
Klasse.forName() wird immer der ClassLoader des Aufrufers, in der Erwägung, dass ClassLoader.loadClass() können Sie eine andere ClassLoader. Ich glaube, dass Klasse.Vorname initialisiert die geladenen Klasse als gut, in der Erwägung, dass der ClassLoader.loadClass () - Ansatz nicht sofort (es ist nicht initialisiert, bis es zum ersten mal verwendet).
Anderen Lesen muss:
Java: Thread Status Einführung mit Beispiel
Einfache Java-Enum-Beispiel
Methode 3
Verwendung von clone(). Die clone() kann verwendet werden, um erstellen Sie eine Kopie eines bestehenden Objekts.
Methode 4
Mittels newInstance () - Methode
Methode 5
Mithilfe Des Objekt-Deserialisierung. Objekt-Deserialisierung ist nichts anderes als das erstellen eines Objekts aus seiner serialisierten form.
InformationsquelleAutor der Antwort Andriya
Hängt davon ab, was genau du damit meinst zu erstellen, aber einige andere sind:
InformationsquelleAutor der Antwort Garth Gilmour
gibt es auch ClassLoader.loadClass(string) dies ist aber oft nicht genutzt.
und wenn Sie wollen, um insgesamt Anwalt darüber, arrays sind technisch Objekte, weil der ein array ist .length-Eigenschaft. so initialisieren Sie ein array ein Objekt erstellt.
InformationsquelleAutor der Antwort the0ther
Wir erstellen Objekte in 5 Möglichkeiten:
InformationsquelleAutor der Antwort tanushree roy
Können wir auch das Objekt in dieser Art und Weise:-
Niemand diskutieren.
InformationsquelleAutor der Antwort Deepak Sharma