Ich kenne die Verwendung von "new" Schlüsselwort und class.forName() Aber ich habe gelernt, dass wir Objekte erstellen können beim Schreiben der Definition von Methoden. wie methodName (Objekterstellung);Wie viele Möglichkeiten, um ein Objekt in Java zu erstellen?
Antwort
Dies sind alle Methoden, mit denen Objekte erstellt werden können.
Methode 1:
neues Schlüsselwort. Dies ist die gebräuchlichste Methode, um ein Objekt in Java zu erstellen. Fast 99% der Objekte werden auf diese Weise erstellt.
Object object = new Object();
Methode 2:
mit Class.forName(). Class.forName()
gibt Ihnen das Klassenobjekt, das für die Reflexion nützlich ist. Die Methoden, die dieses Objekt hat, werden von Java definiert, nicht vom Programmierer, der die Klasse schreibt. Sie sind für jede Klasse gleich. Wenn Sie newInstance() aufrufen, erhalten Sie eine Instanz dieser Klasse (dh callingClass.forName ("ExampleClass"). NewInstance() entspricht dem Aufruf von exampleClass()), auf dem Sie die von der Klasse definierten Methoden aufrufen können. Zugriff auf die sichtbaren Felder usw.
CrunchifyObj object2 = (CrunchifyObj)
Class.forName("crunchify.com.example.CrunchifyObj").newInstance();
Class.forName() wird immer die Classloader des Anrufers verwenden, während ClassLoader.loadClass() einen anderen Classloader angeben. Ich glaube, dass Class.forName auch die geladene Klasse initialisiert, während der ClassLoader.loadClass() - Ansatz das nicht sofort macht (es wird erst initialisiert, wenn es zum ersten Mal verwendet wird).
Methode 3:
Verwendung Klon(). Die Object::clone()
kann verwendet werden, um eine Kopie eines vorhandenen Objekts zu erstellen.
CrunchifyObj secondObject = new CrunchifyObj();
CrunchifyObj object3 = (CrunchifyObj) secondObject.clone();
Methode 4:
Verwendung Class::newInstance()
Methode. Siehe Oracle Tutorial.
Object object4 = CrunchifyObj.class.getClassLoader().loadClass("crunchify.com.example.CrunchifyObj").newInstance();
Methode 5:
Object Deserialization Verwendung. Objekt Deserialisierung ist nichts anderes als ein Objekt aus seiner serialized Form zu erstellen.
// create a new file with an ObjectOutputStream
FileOutputStream out = new FileOutputStream("crunchify.txt");
ObjectOutputStream oout = new ObjectOutputStream(out);
// write something in the file
oout.writeObject(object3);
oout.flush();
// create an ObjectInputStream for the file we created before
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("crunchify.txt"));
CrunchifyObj object5 = (CrunchifyObj) ois.readObject();
Methode 6:
über die Constructor
Klasse aus dem java.lang.reflect Paket, einen Teil der Java Reflection Möglichkeiten.
Class clazz = CrunchifyObj.class;
Constructor crunchifyCon = clazz.getDeclaredConstructors()[0];
CrunchifyObj obj = (CrunchifyObj) crunchifyCon.newInstance();
- 1. Ein Eingabefeld, viele Möglichkeiten ... in Rails
- 2. Erstellen zu viele Threads in Java
- 3. Wie viele Möglichkeiten gibt es Variablen in Facelets zu deklarieren?
- 4. Viele Möglichkeiten in einem Modellfeld?
- 5. Viele zu viele Objekt-Objekt-Beziehung in C#
- 6. Wie verwende ich die Ausgabe einer JSON-Datei in Java, um damit ein Objekt zu erstellen?
- 7. Java: Datenstruktur, um viele Wörter zu speichern
- 8. Verwirrt von, wie viele Möglichkeiten gibt, NODE_ENV
- 9. Zwei Möglichkeiten, um Python-basierte Webseiten zu erstellen?
- 10. Verschiedene Möglichkeiten DAGs in Java zu implementieren
- 11. Java: Möglichkeiten, XML in E4X zu analysieren?
- 12. Wie viele Bytes ein Null-Objekt?
- 13. Was könnten die Möglichkeiten sein, ein Thread-unsicheres java.sql.Connection-Objekt in Java zu verwenden?
- 14. Erstellen Sie ein JSON-Objekt mit Java
- 15. Warum array.push() wird verwendet, um ein Objekt zu erstellen?
- 16. wie ein Eingangsstrom zu einem Java-Objekt
- 17. Wie subtrahiere ich zwei XmlGregorianCalendar-Objekte, um ein Duration-Objekt zu erstellen?
- 18. 5 Möglichkeiten, um das statische Schlüsselwort in Java
- 19. Symfony neues Objekt erstellen viele zu einem Fehleraufruf undefined Methode
- 20. Wie viele String-Objekt ..?
- 21. Wie viele Möglichkeiten, Bitmap in String und umgekehrt umzuwandeln?
- 22. Cast, ein Objekt zu lange in Java
- 23. Kann keine Viele-zu-Viele-Beziehung erstellen
- 24. Java viele zu viele Assoziations Karte
- 25. Verschiedene Möglichkeiten, Outlook AddIns zu erstellen
- 26. EntityFramework automatisch viele-zu-viele-Beziehungen erstellen
- 27. Wie viele Möglichkeiten zum Definieren einer benutzerdefinierten Anweisung in angularjs?
- 28. Möglichkeiten, um vorbereitete Aussagen zu erzwingen
- 29. Java zu viele offene Dateien
- 30. Verschiedene Möglichkeiten, um Kernel
Was möchten Sie erreichen? –
Anstelle von 'Class.forName()' meinst du 'Class.newInstance()'? –
Keine Ahnung, wovon du sprichst. Es gibt nur neue und Reflektionen (entweder newInstance() oder spezifische Konstruktorobjekte).Aber selbst wenn Sie eine Instanz einer anonymen inneren Klasse erstellen, beginnen Sie mit ** new **. – GhostCat