Verschiedene Möglichkeiten, ein Objekt in Java zu erstellen
Objekterstellung einer Klasse in Java
Es gibt fünf verschiedene Möglichkeiten, ein Objekt zu erstellen und wir werden die unten angegebenen Möglichkeiten zum Erstellen eines Objekts sehen:
- Verwenden des "neuen" Schlüsselworts
- Mit der Methode "newInstance()" der Klasse.
- Clone()-Methode verwenden
- Verwendung der "newInstance()"-Methode der Constructor-Klasse
- Deserialisierung verwenden
1) "Neues" Schlüsselwort verwenden
- new ist ein Schlüsselwort, das in Java eingeführt wird.
- Wir verwenden meistens ein neues Schlüsselwort, um ein Objekt zu erstellen.
- Indem wir das Schlüsselwort new verwenden, können wir jeden Konstruktor aufrufen, den wir aufrufen möchten.
Beispiel:
class CreateObjectByNew { // Default Constructor CreateObjectByNew() { System.out.println("We are creating an object by using new keyword"); } } class Main { public static void main(String[] args) { // Creating an object of CreateObjectByNew class CreateObjectByNew cobn = new CreateObjectByNew(); } }
Ausgabe
E:\Programs>javac Main.java E:\Programs>java Main We are creating an object by using new keyword
2) Verwendung der Methode "newInstance()" von Class.
- Diese Methode newInstance() ist in Class. verfügbar
- Durch die Verwendung der Methode newInstance() von Class kann sie den Konstruktor ohne Argumente oder den Standardkonstruktor aufrufen.
- Es erstellt eine neue Instanz der Klasse.
Beispiel:
class NewInstanceMethodOfClass { // Default constructor NewInstanceMethodOfClass() { System.out.println("Object by using newInstance() method of Class"); } } class Main { public static void main(String[] args) throws Exception { // Creating an object of Class class and // we are passing our class as an argument // in forName() method of Class Class cl = Class.forName("NewInstanceMethodOfClass"); // Now we are calling newInstance() method of Class // and returns a reference of our created class NewInstanceMethodOfClass nimoc = (NewInstanceMethodOfClass) cl.newInstance(); } }
Ausgabe
E:\Programs>javac Main.java E:\Programs>java Main Object by using newInstance() method of Class
3) Die Methode clone() verwenden
- Diese Methode ist in der java.lang.Cloneable-Schnittstelle verfügbar.
- Wir haben die Methode clone() der klonbaren Schnittstelle in unserer Klasse überschrieben.
- Es ist die einfachste Art, ein Objekt zu kopieren.
Beispiel:
class CreateObjectByClone implements Cloneable { String name; CreateObjectByClone(String name) { this.name = name; } public Object clone() throws CloneNotSupportedException { return super.clone(); } public static void main(String[] args) throws Exception { CreateObjectByClone cobc1 = new CreateObjectByClone("Preeti"); CreateObjectByClone cobc2 = (CreateObjectByClone) cobc1.clone(); System.out.println("The values before clone() in cobc1" + " " + cobc1.name); System.out.println("The values after clone() in cobc2" + " " + cobc2.name); } }
Ausgabe
E:\Programs>javac CreateObjectByClone.java E:\Programs>java CreateObjectByClone The values before clone() in cobc1 Preeti The values after clone() in cobc2 PreetiAnzeige
4) Verwenden der Methode "newInstance()" der Constructor-Klasse
- Es erstellt auch eine neue Instanz einer Klasse, ähnlich der Methode newInstance() der Klasse Class.
- Durch die Verwendung der Methode newInstance() der Constructor-Klasse kann eine beliebige Anzahl von Argumentkonstruktoren aufgerufen werden.
Beispiel:
import java.lang.reflect.Constructor; class NewInstanceMethodOfConstructor { String fname, lname; // passName() method with two argument public void passName(String fname, String lname) { this.fname = fname; this.lname = lname; } } class Main { public static void main(String[] args) { try { // calling constructor and returns a reference of Constructor class Constructor cons = NewInstanceMethodOfConstructor.class.getDeclaredConstructor(); // Now we are calling newInstance() method of Class // and returns a reference of our created class NewInstanceMethodOfConstructor nimoc = (NewInstanceMethodOfConstructor) cons.newInstance(); nimoc.passName("Preeti", "Jain"); System.out.println("My full name is :" + nimoc.fname + " " + nimoc.lname); } catch (NoSuchMethodException ex) { System.out.println(ex.getMessage()); } catch (SecurityException ex) { System.out.println(ex.getMessage()); } catch (InstantiationException ex) { System.out.println(ex.getMessage()); } catch (IllegalAccessException ex) { System.out.println(ex.getMessage()); } catch (IllegalArgumentException ex) { System.out.println(ex.getMessage()); } catch (Exception ex) { System.out.println(ex.getMessage()); } } }
Ausgabe
E:\Programs>javac Main.java E:\Programs>java Main My full name is :Preeti Jain
5) Deserialisierung verwenden
- Wenn wir ein Objekt serialisieren, dann nachdem wir es deserialisiert haben, erstellt die Laufzeitumgebung JVM ein separates Objekt dafür.
- Bei der Deserialisierung wird kein Konstruktor aufgerufen, um ein Objekt zu erstellen.
- Unsere Klasse muss eine serialisierbare Schnittstelle implementieren.
- Wir werden zwei Klassen namens ObjectOutputStream und ObjectInputStream und ihre beiden Methoden writeObject() von ObjectOutputStream und readObject() von ObjectInputStream verwenden.
- writeObject():Diese Methode serialisiert ein Objekt und übergibt es an den Ausgabestream.
- readObject():Diese Methode referenziert ein Objekt aus dem Stream und deserialisiert es dann.
Beispiel:
// Java program to demonstrating serialize and deserializing an object import java.io.*; class Serialize implements Serializable { public String fname, lname; public Serialize(String fname, String lname) { this.fname = fname; this.lname = lname; } } public class Deserialization { public static void main(String[] args) { Serialize serialize = new Serialize("Ronit", "Jain"); try { FileOutputStream fos = new FileOutputStream("E:\\Programs\\myjava.txt"); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(serialize); oos.close(); fos.close(); } catch (IOException ex) { System.out.println(ex.getMessage()); } serialize = null; try { FileInputStream fis = new FileInputStream("E:\\Programs\\myjava.txt"); ObjectInputStream ois = new ObjectInputStream(fis); serialize = (Serialize) ois.readObject(); ois.close(); fis.close(); System.out.println("His full name is :" + serialize.fname + " " + serialize.lname); } catch (IOException ex) { System.out.println(ex.getMessage()); } catch (ClassNotFoundException ex) { System.out.println(ex.getMessage()); } } }
Ausgabe
E:\Programs>javac Deserialization.java E:\Programs>java Deserialization His full name is :Ronit Jain