logo

Kuinka luoda objektia Javassa

The esine on perusrakennuspalikka an Oho Kieli. Sisään Java , emme voi suorittaa mitään ohjelmaa luomatta esine . On olemassa erilaisia ​​tapoja luo an objekti Javassa joista keskustelemme tässä osiossa, ja myös opimme kuinka luoda objekti Javassa.

Java tarjoaa viisi tapaa luoda objekti.

  • Käyttämällä Uusi avainsana
  • Käyttämällä klooni() menetelmä
  • Käyttämällä newInstance() menetelmä Luokka luokkaa
  • Käyttämällä newInstance() menetelmä Rakentaja luokkaa
  • Käyttämällä Deserialisointi

Uuden avainsanan käyttö

Käyttämällä Uusi avainsana on suosituin tapa luoda luokan objekti tai esiintymä. Kun luomme luokan esiintymän käyttämällä uutta avainsanaa, se varaa muistia (keon) juuri luodulle esine ja myös palauttaa viite tuosta esineestä tuohon muistiin. Uutta avainsanaa käytetään myös taulukon luomiseen. Objektin luomisen syntaksi on:

 ClassName object = new ClassName(); 

Luodaan ohjelma, joka käyttää uutta avainsanaa objektin luomiseen.

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(); } } 

Lähtö:

 Welcome to javaTpoint 

Uutta avainsanaa käyttämällä voimme myös kutsua luokan rakentajan (oletus tai parametroitu).

CreateObjectExample2.java

päivällinen vs illallinen
 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(); } } 

Lähtö:

 Welcome to javaTpoint 

Klooni()-menetelmän käyttäminen

The klooni() menetelmä on menetelmä Esine luokkaa. Se luo kopion objektista ja palauttaa saman kopion. The JVM luo uuden objektin, kun clone()-metodia kutsutaan. Se kopioi aiemmin luodun objektin kaiken sisällön uudeksi objektiksi. Huomaa, että se ei kutsu mitään konstruktoria. Meidän on pantava täytäntöön Kloonattavissa käyttöliittymä klone()-menetelmää käytettäessä. Menetelmä heittää CloneNotSupportedException poikkeus, jos objektin luokka ei tue Cloneable-liitäntää. Clone()-menetelmän ohittavat alaluokat voivat tehdä poikkeuksen, jos esiintymää ei voida kloonata.

Huomautus: Menetelmä luo objektin kopion, ei uutta objektia.

Syntaksi:

 protected Object clone() throws CloneNotSupportedException 

Käytämme seuraavaa käskyä uuden objektin luomiseen.

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

CreateObjectExample3.java

objekti javassa
 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(); } } } 

Lähtö:

 New Object Created 

Luokkaluokan newInstance()-menetelmän käyttö

The newInstance() Class-luokan menetelmää käytetään myös objektin luomiseen. Se kutsuu oletuskonstruktorin objektin luomiseksi. Se palauttaa objektin edustaman luokan äskettäin luodun ilmentymän. Se käyttää sisäisesti Constructor-luokan newInstance()-metodia.

Syntaksi:

 public T newInstance() throws InstantiationException, IllegalAccessException 

Se heittää IllegalAccessException, InstantiationException, ExceptionInInitializerError poikkeuksia.

Voimme luoda objektin seuraavilla tavoilla:

 ClassName object = ClassName.class.newInstance(); 

Tai

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

Yllä olevassa lausunnossa forName() on Class-luokan staattinen menetelmä. Se jäsentää parametrin luokan nimi tyyppiä String. Se palauttaa luokan objektin täydellisellä nimellä. Se lataa luokan, mutta ei luo objektia. Se heittää ClassNotFoundException jos luokkaa ei voi ladata ja LinkageError jos kytkentä epäonnistuu.

Objektin luomiseen käytämme newInstance() Class-luokan menetelmä. Se toimii vain, kun tiedämme luokan nimen ja luokalla on julkinen oletuskonstruktori.

Seuraavassa ohjelmassa olemme luoneet uuden objektin käyttämällä newInstance()-metodia.

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(); } } } 

Lähtö:

 A new object created. 

Constructor-luokan newInstance()-metodin käyttö

Se on samanlainen kuin newInstance() menetelmä Luokka luokkaa. Se tunnetaan heijastavana tapana luoda esineitä. Menetelmä on määritelty kohdassa Rakentaja luokka, jonka luokka onjava.lang.reflectpaketti. Voimme kutsua myös parametroitua konstruktoria ja yksityistä konstruktoria käyttämällä newInstance() menetelmä. Se on laajalti suositeltu Class-luokan newInstance()-menetelmään verrattuna.

Syntaksi:

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

Menetelmä jäsentää objektijoukon argumenttina. Alkuperäisten tyyppien arvot käärittynä sopivan tyyppiseen kääreeseen. Se palauttaa uuden objektin, joka on luotu kutsumalla konstruktoria. Se heittää IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInitializerError Exceptions .

python kirjoittaa json tiedostoon

Voimme luoda objektin seuraavalla tavalla:

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

Luodaan ohjelma, joka luo objektin newInstance()-metodilla.

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(); } } } 

Lähtö:

java indexof
 JavaTpoint 

Deserialisoinnin käyttäminen

Javalla, sarjoittaminen on prosessi, jossa objekti muunnetaan tavuvirran sekvenssiksi. Serialisoinnin käänteistä prosessia (tavuvirta objektiin) kutsutaan deserialisointi . JVM luo uuden objektin, kun sarjoimme tai deserialoimme objektin. Se ei käytä konstruktoria objektin luomiseen. Kun käytät deserialisointia, Sarjasoitavissa rajapinta (merkkirajapinta) tulee olla toteutettu luokassa.

Kuinka luoda objektia Javassa

Sarjoitus: The writeObject() menetelmä ObjectOutputStream luokkaa käytetään objektin sarjoittamiseen. Se lähettää objektin lähtövirtaan.

Syntaksi:

 public final void writeObject(object x) throws IOException 

Deserialisointi: Menetelmä readObject() / ObjectInputStream luokkaa käytetään objektin deserialisoimiseen. Se viittaa virran ulkopuolisiin objekteihin.

Syntaksi:

 public final Object readObject() throws IOException,ClassNotFoundException 

Huomautus: Tee tiedostosta staattinen tai ohimenevä, jos emme halua sisällyttää kenttää osaksi objektia. Se ei sisälly serialisointiprosessiin.

Ymmärretään serialisointi ja deserialisointi ohjelman kautta.

Työntekijä.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; } } 

Olemme luoneet luokan nimeltä Työntekijä jonka kohde on sarjoitettava ja deserialoitava.

urfi javed

Java-objektin serialisointi:

Seuraavassa ohjelmassa olemme sarjoittaneet Työntekijä-luokan objektin käyttämällä writeObject() ObjectOutputStream-luokan menetelmä. Objektin tila tallennetaan työntekijä.txt tiedosto.

SerializationExample.java

 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); } } } 

Lähtö:

 Successfully Created 

Java-objektin serialisointi:

Seuraavassa ohjelmassa sarjoitamme objektin, jonka olemme sarjoittaneet yllä olevassa ohjelmassa.

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); } } } 

Lähtö:

 198054 Andrew 

Yllä olevissa viidessä menetelmässä olemme huomanneet, että Uusi avainsana ja molemmat newInstance() menetelmät käyttävät konstruktoria objektien luomiseen, kun taas kaksi muuta menetelmää eivät käytä konstruktoria.