The predmet je osnovni gradnik an OOPs jezik. notri Java , ne moremo izvesti nobenega programa, ne da bi ustvarili predmet . Obstajajo različni načini za ustvariti objekt v Javi o katerih bomo razpravljali v tem razdelku in se tudi naučili kako ustvariti objekt v Javi.
Java nudi pet načinov za ustvarjanje predmeta.
- Uporaba novo Ključna beseda
- Uporaba klon() metoda
- Uporaba newInstance() metoda Razred razred
- Uporaba newInstance() metoda Konstruktor razred
- Uporaba Deserializacija
Uporaba nove ključne besede
Uporabljati novo ključna beseda je najbolj priljubljen način za ustvarjanje predmeta ali primerka razreda. Ko ustvarimo primerek razreda z uporabo ključne besede new, ta dodeli pomnilnik (kopico) za novo ustvarjeno predmet in tudi vrne referenca tega predmeta v ta spomin. Nova ključna beseda se uporablja tudi za ustvarjanje matrike. Sintaksa za ustvarjanje predmeta je:
ClassName object = new ClassName();
Ustvarimo program, ki za ustvarjanje predmeta uporablja ključno besedo new.
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(); } }
Izhod:
Welcome to javaTpoint
Z uporabo ključne besede new lahko prikličemo tudi konstruktor (privzetega ali parametriranega) razreda.
CreateObjectExample2.java
java prekinitev zanke
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(); } }
Izhod:
Welcome to javaTpoint
Uporaba metode clone().
The klon() metoda je metoda Objekt razred. Ustvari kopijo predmeta in vrne isto kopijo. The JVM ustvari nov objekt, ko je priklicana metoda clone(). Kopira vso vsebino predhodno ustvarjenega objekta v nov objekt. Upoštevajte, da ne kliče nobenega konstruktorja. Izvajati moramo Klonirati vmesnik med uporabo metode clone(). Metoda meče CloneNotSupportedException izjema, če razred objekta ne podpira vmesnika Cloneable. Podrazredi, ki preglasijo metodo clone(), lahko povzročijo izjemo, če primerka ni mogoče klonirati.
Opomba: Metoda ustvari kopijo predmeta in ne novega predmeta.
Sintaksa:
protected Object clone() throws CloneNotSupportedException
Za ustvarjanje novega predmeta uporabimo naslednji stavek.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
aes proti des
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(); } } }
Izhod:
New Object Created
Uporaba metode newInstance() razreda razreda
The newInstance() Metoda razreda Class se uporablja tudi za ustvarjanje predmeta. Pokliče privzeti konstruktor za ustvarjanje predmeta. Vrne novo ustvarjeni primerek razreda, ki ga predstavlja predmet. Interno uporablja metodo newInstance() razreda Constructor.
Sintaksa:
public T newInstance() throws InstantiationException, IllegalAccessException
Vrže IllegalAccessException, InstantiationException, ExceptionInInitializerError izjeme.
Objekt lahko ustvarimo na naslednje načine:
ClassName object = ClassName.class.newInstance();
oz
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
V zgornji izjavi je forName() je statična metoda razreda razreda. Razčleni parameter className tipa String. Vrne objekt za razred s popolnoma kvalificiranim imenom. Naloži razred, vendar ne ustvari nobenega predmeta. Vrže ClassNotFoundException če razreda ni mogoče naložiti in LinkageError če povezava ne uspe.
Za ustvarjanje predmeta uporabimo newInstance() metoda razreda Class. Deluje le, če poznamo ime razreda in ima razred javni privzeti konstruktor.
V naslednjem programu smo ustvarili nov objekt z uporabo metode newInstance().
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(); } } }
Izhod:
dolgo nanizati
A new object created.
Uporaba metode newInstance() razreda Constructor
Podobno je newInstance() metoda Razred razred. Znan je kot odsevni način ustvarjanja predmetov. Metoda je opredeljena v Konstruktor razred, ki je razredjava.lang.reflectpaket. Prav tako lahko pokličemo parametrizirani konstruktor in zasebni konstruktor z uporabo newInstance() metoda. V primerjavi z metodo newInstance() razreda Class ima veliko prednost.
Sintaksa:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Metoda razčleni matriko predmetov kot argument. Vrednosti primitivnih tipov, ovitih v predmet ovoja ustreznega tipa. Vrne nov objekt, ustvarjen s klicem konstruktorja. Vrže Izjeme IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError .
Objekt lahko ustvarimo na naslednji način:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Ustvarimo program, ki ustvari objekt z uporabo metode 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(); } } }
Izhod:
JavaTpoint
Uporaba deserializacije
V Javi, serializacija je postopek pretvorbe objekta v zaporedje bajtnega toka. Pokliče se obratni postopek (tok bajtov v objekt) serializacije deserializacija . JVM ustvari nov objekt, ko objekt serializiramo ali deserializiramo. Za ustvarjanje predmeta ne uporablja konstruktorja. Med uporabo deserializacije je Serializable vmesnik (marker vmesnik) mora biti implementiran v razredu.
Serializacija: The writeObject() metoda ObjectOutputStream razred se uporablja za serializacijo objekta. Objekt pošlje v izhodni tok.
Sintaksa:
gimp zamenja barvo
public final void writeObject(object x) throws IOException
Deserializacija: Metoda readObject() od ObjectInputStream razred se uporablja za deserializacijo objekta. Sklicuje se na predmete iz toka.
Sintaksa:
public final Object readObject() throws IOException,ClassNotFoundException
Opomba: Datoteka naj bo statična ali prehodna, če ne želimo vključiti polja kot del predmeta. Ne bo vključen v postopek serializacije.
Razumejmo serializacijo in deserializacijo skozi program.
Zaposleni.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; } }
Ustvarili smo razred z imenom Zaposleni katerega objekt je treba serializirati in deserializirati.
Serializacija predmeta Java:
V naslednjem programu smo serializirali objekt razreda Employee z uporabo writeObject() metoda razreda ObjectOutputStream. Stanje predmeta se shrani v zaposleni.txt mapa.
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); } } }
Izhod:
polna oblika pvr
Successfully Created
Deserializacija predmeta Java:
V naslednjem programu bomo deserializirali objekt, ki smo ga serializirali v zgornjem programu.
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); } } }
Izhod:
198054 Andrew
Pri zgornjih petih metodah smo opazili, da novo ključno besedo in oboje newInstance() metode uporabljajo konstruktor za ustvarjanje objektov, medtem ko preostali dve metodi ne uporabljata konstruktorja.