Java >> Java Tutorial >  >> Java

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:

  1. Verwenden des "neuen" Schlüsselworts
  2. Mit der Methode "newInstance()" der Klasse.
  3. Clone()-Methode verwenden
  4. Verwendung der "newInstance()"-Methode der Constructor-Klasse
  5. 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 Preeti
Anzeige

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

Java-Tag