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.
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.