logo

Cum se creează obiecte în Java

The obiect este un element de bază al unui OOPs limba. În Java , nu putem executa niciun program fără a crea un obiect . Există diverse moduri de a creaza un obiect în Java despre care vom discuta în această secțiune și, de asemenea, vom învăța cum se creează un obiect în Java.

Java oferă cinci moduri de a crea un obiect.

  • Folosind nou Cuvânt cheie
  • Folosind clona() metodă
  • Folosind newInstance() metoda de Clasă clasă
  • Folosind newInstance() metoda de Constructor clasă
  • Folosind Deserializarea

Se utilizează un cuvânt cheie nou

Folosind nou cuvântul cheie este cel mai popular mod de a crea un obiect sau o instanță a clasei. Când creăm o instanță a clasei folosind cuvântul cheie nou, acesta alocă memorie (heap) pentru noul creat obiect și, de asemenea, returnează referinţă a acelui obiect la acea memorie. Cuvântul cheie nou este folosit și pentru a crea o matrice. Sintaxa pentru crearea unui obiect este:

 ClassName object = new ClassName(); 

Să creăm un program care folosește un cuvânt cheie nou pentru a crea un obiect.

CreateObjectExample1.java

 public class CreateObjectExample1 { void show() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample1 obj = new CreateObjectExample1(); //invoking method using the object obj.show(); } } 

Ieșire:

 Welcome to javaTpoint 

Folosind cuvântul cheie nou, putem invoca și constructorul (implicit sau parametrizat) al clasei.

CreateObjectExample2.java

Descărcați videoclipuri de pe youtube pe vlc
 public class CreateObjectExample2 { //constructor of the class CreateObjectExample2() { System.out.println('Welcome to javaTpoint'); } public static void main(String[] args) { //creating an object using new keyword CreateObjectExample2 obj = new CreateObjectExample2(); } } 

Ieșire:

 Welcome to javaTpoint 

Folosind metoda clone().

The clona() metoda este metoda de Obiect clasă. Acesta creează o copie a unui obiect și returnează aceeași copie. The JVM creează un obiect nou când este invocată metoda clone(). Copiază tot conținutul obiectului creat anterior într-un obiect nou. Rețineți că nu apelează niciun constructor. Trebuie să implementăm Clonabil interfață în timp ce utilizați metoda clone(). Metoda aruncă CloneNotSupportedException excepție dacă clasa obiectului nu acceptă interfața Cloneable. Subclasele care suprascriu metoda clone() pot arunca o excepție dacă o instanță nu poate fi clonată.

Notă: Metoda creează o copie a obiectului, nu un obiect nou.

Sintaxă:

 protected Object clone() throws CloneNotSupportedException 

Folosim următoarea instrucțiune pentru a crea un nou obiect.

 ClassName newobject = (ClassName) oldobject.clone(); 

CreateObjectExample3.java

gimp schimba culoarea
 public class CreateObjectExample3 implements Cloneable { @Override protected Object clone() throws CloneNotSupportedException { //invokes the clone() method of the super class return super.clone(); } String str = 'New Object Created'; public static void main(String[] args) { //creating an object of the class CreateObjectExample3 obj1 = new CreateObjectExample3(); //try catch block to catch the exception thrown by the method try { //creating a new object of the obj1 suing the clone() method CreateObjectExample3 obj2 = (CreateObjectExample3) obj1.clone(); System.out.println(obj2.str); } catch (CloneNotSupportedException e) { e.printStackTrace(); } } } 

Ieșire:

 New Object Created 

Folosind metoda newInstance() a clasei Class

The newInstance() Metoda clasei Class este de asemenea folosită pentru a crea un obiect. Apelează constructorul implicit pentru a crea obiectul. Returnează o instanță nou creată a clasei reprezentate de obiect. Utilizează intern metoda newInstance() a clasei Constructor.

Sintaxă:

 public T newInstance() throws InstantiationException, IllegalAccessException 

Aruncă IllegalAccessException, InstantiationException, ExceptionInInitializerError excepții.

Putem crea un obiect în următoarele moduri:

 ClassName object = ClassName.class.newInstance(); 

Sau

 ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance(); 

În afirmația de mai sus, forName() este o metodă statică a clasei Class. Analizează un parametru numele clasei de tip String. Returnează obiectul pentru clasa cu numele complet calificat. Încarcă clasa, dar nu creează niciun obiect. Aruncă ClassNotFoundException dacă clasa nu poate fi încărcată și LinkageError dacă legătura eșuează.

Pentru a crea obiectul, folosim newInstance() metoda clasei Class. Funcționează numai atunci când cunoaștem numele clasei și clasa are un constructor public implicit.

În programul următor, creăm un nou obiect folosind metoda newInstance().

kat timpf sora

CreateObjectExample4.java

 public class CreateObjectExample4 { void show() { System.out.println('A new object created.'); } public static void main(String[] args) { try { //creating an instance of Class class Class cls = Class.forName('CreateObjectExample4'); //creates an instance of the class using the newInstance() method CreateObjectExample4 obj = (CreateObjectExample4) cls.newInstance(); //invoking the show() method obj.show(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } 

Ieșire:

 A new object created. 

Folosind metoda newInstance() a clasei Constructor

Este similar cu newInstance() metoda de Clasă clasă. Este cunoscut ca un mod reflectorizant de a crea obiecte. Metoda este definită în Constructor clasa care este clasa ajava.lang.reflectpachet. De asemenea, putem apela constructorul parametrizat și constructorul privat folosind newInstance() metodă. Este preferată pe scară largă în comparație cu metoda newInstance() din clasa Class.

Sintaxă:

 public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException 

Metoda parsează o matrice de obiecte ca argument. Valorile tipurilor primitive înfășurate într-un obiect wrapper de tipul corespunzător. Returnează un nou obiect creat prin apelarea constructorului. Aruncă IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError Excepții .

Putem crea un obiect în felul următor:

 Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance(); 

Să creăm un program care creează un obiect folosind metoda newInstance().

CreateObjectExample5.java

 import java.lang.reflect.*; public class CreateObjectExample5 { private String str; CreateObjectExample5() { } public void setName(String str) { this.str = str; } public static void main(String[] args) { try { Constructor constructor = CreateObjectExample5.class.getDeclaredConstructor(); CreateObjectExample5 r = constructor.newInstance(); r.setName('JavaTpoint'); System.out.println(r.str); } catch (Exception e) { e.printStackTrace(); } } } 

Ieșire:

 JavaTpoint 

Utilizarea deserializării

În Java, serializare este procesul de conversie a unui obiect într-o secvență de flux de octeți. Procesul invers (byte-stream to object) de serializare este apelat deserializare . JVM-ul creează un obiect nou atunci când serializăm sau deserializăm un obiect. Nu folosește constructor pentru a crea un obiect. În timp ce utilizați deserializarea, Serializabil interfata (interfata marker) trebuie implementata in clasa.

Cum se creează obiecte în Java

Serializare: The scrieObject() metoda de ObjectOutputStream clasa este folosită pentru a serializa un obiect. Acesta trimite obiectul în fluxul de ieșire.

carcasa comutatorului java

Sintaxă:

 public final void writeObject(object x) throws IOException 

Deserializare: Metoda readObject() de ObjectInputStream clasa este folosită pentru a deserializa un obiect. Face referire la obiecte dintr-un flux.

Sintaxă:

 public final Object readObject() throws IOException,ClassNotFoundException 

Notă: Faceți fișierul static sau tranzitoriu dacă nu dorim să includem un câmp ca parte a obiectului. Nu va fi inclus în procesul de serializare.

Să înțelegem serializarea și deserializarea printr-un program.

Angajat.java

 import java.io.Serializable; public class Employee implements Serializable { int empid; String empname; public Empoyee(int empid, String empname) { this.empid = empid; this.empname = empname; } } 

Am creat o clasă numită Angajat al cărui obiect urmează să fie serializat și deserializat.

Serializarea obiectului Java:

În programul următor, am serializat un obiect din clasa Angajat folosind scrieObject() metoda clasei ObjectOutputStream. Starea obiectului este salvată în angajat.txt fişier.

SerializationExample.java

cum se utilizează mysql workbench
 import java.io.*; class SerializationExample { public static void main(String args[]) { Try { //Creating the object Employee emp = new Employee(198054,'Andrew'); //Creates a stream and writes the object FileOutputStream fout=new FileOutputStream('employee.txt'); ObjectOutputStream out=new ObjectOutputStream(employeeout); out.writeObject(emp); out.flush(); //closes the output stream out.close(); System.out.println('Successfully Created'); } catch(Exception e) { System.out.println(e); } } } 

Ieșire:

 Successfully Created 

Deserializarea obiectului Java:

În programul următor, vom deserializa un obiect pe care l-am serializat în programul de mai sus.

DeserializationExample.java

 import java.io.*; class DeserializationExample { public static void main(String args[]) { try { //Creating a stream to read the object ObjectInputStream in=new ObjectInputStream(new FileInputStream('employee.txt')); Employee e=(Employee)in.readObject(); //prints the data of the serialized object System.out.println(e.empid+' '+e.empname); //closing the input stream in.close(); } catch(Exception e) { System.out.println(e); } } } 

Ieșire:

 198054 Andrew 

În cele cinci metode de mai sus, am observat că nou cuvânt cheie și ambele newInstance() metodele folosesc constructorul pentru a crea obiecte, în timp ce celelalte două metode nu folosesc constructorul.