2016-06-24 11 views
2

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?

+2

Was möchten Sie erreichen? –

+0

Anstelle von 'Class.forName()' meinst du 'Class.newInstance()'? –

+0

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

Antwort

4

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(); 
Verwandte Themen