A tárgy egy alapvető építőeleme an OOP nyelv. Ban ben Jáva , egyetlen programot sem tudunk végrehajtani anélkül, hogy létrehoznánk egy tárgy . Különféle módon lehet hozzon létre egy objektum Java nyelven amelyeket ebben a részben tárgyalunk, és azt is megtanuljuk hogyan lehet objektumot létrehozni Java nyelven.
Jáva öt módot kínál egy objektum létrehozására.
- Használata új Kulcsszó
- Használata klón() módszer
- Használata újPéldány() módszere a Osztály osztály
- Használata újPéldány() módszere a Konstruktőr osztály
- Használata Deszerializáció
Új kulcsszó használata
Használni a új kulcsszó a legnépszerűbb módja az osztály objektumának vagy példányának létrehozásának. Amikor létrehozzuk az osztály példányát az új kulcsszó használatával, az újonnan létrehozott számára memóriát (kupacot) foglal le. tárgy és visszaadja a referencia az objektumról ahhoz az emlékhez. Az új kulcsszót tömb létrehozására is használják. Az objektum létrehozásának szintaxisa a következő:
ClassName object = new ClassName();
Hozzunk létre egy programot, amely új kulcsszót használ egy objektum létrehozásához.
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(); } }
Kimenet:
Welcome to javaTpoint
Az új kulcsszó használatával az osztály konstruktorát (alapértelmezett vagy parametrizált) is meghívhatjuk.
CreateObjectExample2.java
megváltoztathatatlan lista
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(); } }
Kimenet:
Welcome to javaTpoint
A clone() metódus használata
A klón() módszer az a módszer Tárgy osztály. Létrehoz egy másolatot egy objektumról, és ugyanazt a másolatot adja vissza. A JVM a clone() metódus meghívásakor új objektumot hoz létre. A korábban létrehozott objektum teljes tartalmát új objektummá másolja. Vegye figyelembe, hogy nem hív meg egyetlen konstruktort sem. Meg kell valósítanunk a Klónozható felületet a clone() metódus használata közben. A módszer dob CloneNotSupportedException kivétel, ha az objektum osztálya nem támogatja a klónozható felületet. A clone() metódust felülíró alosztályok kivételt adhatnak, ha egy példányt nem lehet klónozni.
Megjegyzés: A metódus az objektum másolatát hozza létre, nem pedig új objektumot.
Szintaxis:
protected Object clone() throws CloneNotSupportedException
A következő utasítást használjuk egy új objektum létrehozásához.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
rj12 vs rj11
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(); } } }
Kimenet:
New Object Created
Az osztály osztály newInstance() metódusának használata
A újPéldány() a Class osztály metódusát is használják objektumok létrehozására. Meghívja az alapértelmezett konstruktort az objektum létrehozásához. Az objektum által képviselt osztály újonnan létrehozott példányát adja vissza. Belsőleg a Constructor osztály newInstance() metódusát használja.
Szintaxis:
public T newInstance() throws InstantiationException, IllegalAccessException
Ez dobja a IllegalAccessException, InstantiationException, ExceptionInInitializerError kivételek.
Objektumot a következő módokon hozhatunk létre:
ClassName object = ClassName.class.newInstance();
Vagy
java objektum a json-ra
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
A fenti nyilatkozatban forName() a Class osztály statikus metódusa. Paramétert elemez osztály név String típusú. Az osztály objektumát a teljes képzésű névvel adja vissza. Betölti az osztályt, de nem hoz létre objektumot. Ez dob ClassNotFoundException ha az osztály nem tölthető be és LinkageError ha az összekapcsolás meghiúsul.
Az objektum létrehozásához használjuk a újPéldány() osztály osztály metódusa. Csak akkor működik, ha ismerjük az osztály nevét, és az osztálynak van egy nyilvános alapértelmezett konstruktora.
A következő programban létrehoztunk egy új objektumot a newInstance() metódussal.
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(); } } }
Kimenet:
A new object created.
A Constructor osztály newInstance() metódusának használata
Hasonló a újPéldány() módszere a Osztály osztály. Az objektumok létrehozásának tükröző módjaként ismert. A módszert a Konstruktőr osztály, amelynek az osztályajava.lang.reflectcsomag. A paraméterezett konstruktort és privát konstruktort is hívhatjuk a segítségével újPéldány() módszer. Széles körben előnyben részesítik a Class osztály newInstance() metódusához képest.
Szintaxis:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
A metódus objektumok tömbjét elemzi argumentumként. A primitív típusok értékei a megfelelő típusú wrapper objektumba csomagolva. A konstruktor meghívásával létrehozott új objektumot ad vissza. Ez dob IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInitializerError Exceptions .
Objektumot a következő módon hozhatunk létre:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Hozzunk létre egy programot, amely a newInstance() metódussal létrehoz egy objektumot.
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(); } } }
Kimenet:
JavaTpoint
Deserialization használata
Java nyelven, sorozatosítás az a folyamat, amelynek során egy objektumot bájtfolyamok sorozatává alakítanak. A sorosítás fordított folyamatát (byte-stream to objektum) hívják deszerializáció . A JVM új objektumot hoz létre, amikor egy objektumot szerializálunk vagy deszerializálunk. Nem használ konstruktort egy objektum létrehozásához. A deserializáció használata közben a Sorozatozható interfészt (marker interfész) kell megvalósítani az osztályban.
Sorozatosítás: A writeObject() módszere a ObjectOutputStream osztály egy objektum szerializálására szolgál. Elküldi az objektumot a kimeneti adatfolyamnak.
Szintaxis:
public final void writeObject(object x) throws IOException
Deszerializálás: A módszer readObject() nak,-nek ObjectInputStream osztály egy objektum deszerializálására szolgál. Az adatfolyamon kívüli objektumokra hivatkozik.
Szintaxis:
char int java-ba
public final Object readObject() throws IOException,ClassNotFoundException
Megjegyzés: Tegye statikussá vagy tranzienssé a fájlt, ha nem akarunk mezőt az objektum részeként szerepeltetni. Nem fog szerepelni a sorozatosítási folyamatban.
Értsük meg a szerializálást és a deszerializálást egy programon keresztül.
Munkavállaló.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; } }
nevű osztályt hoztunk létre Munkavállaló amelynek tárgya szerializálandó és deszerializálandó.
Java objektum szerializálása:
A következő programban az Employee osztály objektumát szerializáltuk a writeObject() az ObjectOutputStream osztály metódusa. Az objektum állapota a alkalmazott.txt fájlt.
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); } } }
Kimenet:
Successfully Created
Java objektum deszerializálása:
A következő programban egy olyan objektumot fogunk szerializálni, amelyet a fenti programban szerializáltunk.
DeserializationExample.java
1 milliárdtól millióig
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); } } }
Kimenet:
198054 Andrew
A fenti öt módszernél azt vettük észre, hogy a új kulcsszó és mindkettő újPéldány() A metódusok a konstruktort használják objektumok létrehozásához, míg a többi két módszer nem használja a konstruktort.