The objekt je základním stavebním kamenem an OOPs Jazyk. v Jáva , nemůžeme spustit žádný program bez vytvoření objekt . Existuje různý způsob vytvořit objekt v Javě které v této části probereme a také se naučíme jak vytvořit objekt v Javě.
Jáva poskytuje pět způsobů, jak vytvořit objekt.
- Použitím Nový Klíčové slovo
- Použitím klon() metoda
- Použitím newInstance() metoda Třída třída
- Použitím newInstance() metoda Konstruktér třída
- Použitím Deserializace
Použití nového klíčového slova
Za použití Nový klíčové slovo je nejoblíbenější způsob, jak vytvořit objekt nebo instanci třídy. Když vytvoříme instanci třídy pomocí klíčového slova new, alokuje paměť (hromadu) pro nově vytvořenou objekt a také vrátí odkaz toho předmětu k té paměti. Klíčové slovo new se také používá k vytvoření pole. Syntaxe pro vytvoření objektu je:
ClassName object = new ClassName();
Vytvořme program, který použije nové klíčové slovo k vytvoření objektu.
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(); } }
Výstup:
Welcome to javaTpoint
Pomocí klíčového slova new můžeme také vyvolat konstruktor (výchozí nebo parametrizovaný) třídy.
CreateObjectExample2.java
java se vymanila ze smyčky
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(); } }
Výstup:
Welcome to javaTpoint
Použití metody clone().
The klon() metoda je metoda Objekt třída. Vytvoří kopii objektu a vrátí stejnou kopii. The JVM vytvoří nový objekt při vyvolání metody clone(). Zkopíruje veškerý obsah dříve vytvořeného objektu do nového jednoho objektu. Všimněte si, že nevolá žádný konstruktor. Musíme implementovat Klonovatelné rozhraní při použití metody clone(). Metoda hází CloneNotSupportedException výjimka, pokud třída objektu nepodporuje klonovatelné rozhraní. Podtřídy, které přepisují metodu clone() mohou vyvolat výjimku, pokud instanci nelze naklonovat.
Poznámka: Metoda vytvoří kopii objektu, nikoli nový objekt.
Syntax:
protected Object clone() throws CloneNotSupportedException
K vytvoření nového objektu použijeme následující příkaz.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
může android hrát gamepigeon
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(); } } }
Výstup:
New Object Created
Použití metody newInstance() třídy Class
The newInstance() metoda třídy Class se také používá k vytvoření objektu. Volá výchozí konstruktor k vytvoření objektu. Vrátí nově vytvořenou instanci třídy reprezentované objektem. Interně používá metodu newInstance() třídy Constructor.
Syntax:
public T newInstance() throws InstantiationException, IllegalAccessException
To hází IllegalAccessException, InstantiationException, ExceptionInInitializerError výjimky.
Objekt můžeme vytvořit následujícími způsoby:
ClassName object = ClassName.class.newInstance();
Nebo
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
Ve výše uvedeném prohlášení forName() je statická metoda třídy Class. Analyzuje parametr jméno třídy typu String. Vrátí objekt třídy s plně kvalifikovaným názvem. Načte třídu, ale nevytvoří žádný objekt. To hází ClassNotFoundException pokud třídu nelze načíst a LinkageError pokud spojení selže.
chyba atributu python
K vytvoření objektu použijeme newInstance() metoda třídy Class. Funguje to pouze v případě, že známe jméno třídy a třída má veřejný výchozí konstruktor.
V následujícím programu jsme pomocí metody newInstance() vytvořili nový objekt.
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(); } } }
Výstup:
A new object created.
Použití metody newInstance() třídy konstruktor
Je to podobné jako u newInstance() metoda Třída třída. Je známý jako reflexní způsob vytváření objektů. Metoda je definována v Konstruktér třída, která je třídoujava.lang.reflectbalík. Můžeme také zavolat parametrizovaný konstruktor a soukromý konstruktor pomocí newInstance() metoda. Je široce preferována ve srovnání s metodou newInstance() třídy Class.
Syntax:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Metoda analyzuje pole objektů jako argument. Hodnoty primitivních typů zabalených do obalu Objekt příslušného typu. Vrací nový objekt vytvořený voláním konstruktoru. To hází IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError Exceptions .
Objekt můžeme vytvořit následujícím způsobem:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Vytvořme program, který vytvoří objekt pomocí metody 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(); } } }
Výstup:
JavaTpoint
Použití deserializace
v Javě, serializace je proces převodu objektu na sekvenci byte-streamu. Je volán zpětný proces (byte-stream to object) serializace deserializace . JVM vytvoří nový objekt, když objekt serializujeme nebo deserializujeme. K vytvoření objektu nepoužívá konstruktor. Při použití deserializace, Serializovatelné rozhraní (marker interface) musí být implementováno ve třídě.
10 z 10
Serializace: The writeObject() metoda ObjectOutputStream třída se používá k serializaci objektu. Odešle objekt do výstupního proudu.
Syntax:
public final void writeObject(object x) throws IOException
Deserializace: Metoda readObject() z ObjectInputStream třída se používá k deserializaci objektu. Odkazuje na objekty mimo stream.
Syntax:
public final Object readObject() throws IOException,ClassNotFoundException
Poznámka: Pokud nechceme zahrnout pole jako součást objektu, udělejte pole statické nebo přechodné. Nebude zahrnuta do procesu serializace.
Pojďme pochopit serializaci a deserializaci prostřednictvím programu.
Employee.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; } }
Vytvořili jsme třídu s názvem Zaměstnanec jehož objekt má být serializován a deserializován.
Serializace Java Object:
V následujícím programu jsme serializovali objekt třídy Employee pomocí writeObject() metoda třídy ObjectOutputStream. Stav objektu se uloží do zamestnanec.txt soubor.
git status -s
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); } } }
Výstup:
Successfully Created
Deserializace Java Object:
V následujícím programu budeme deserializovat objekt, který jsme serializovali ve výše uvedeném 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); } } }
Výstup:
198054 Andrew
Ve výše uvedených pěti metodách jsme si všimli, že Nový klíčové slovo a obojí newInstance() metody používají konstruktor k vytváření objektů, zatímco zbývající dvě metody konstruktor nepoužívají.