Det objekt er en grundlæggende byggesten til en OOPs Sprog. I Java , kan vi ikke udføre noget program uden at oprette en objekt . Der er forskellige måder at skabe en objekt i Java som vi vil diskutere i dette afsnit, og også lære hvordan man opretter et objekt i Java.
Java giver fem måder at oprette et objekt på.
- Ved brug af ny Søgeord
- Ved brug af klone() metode
- Ved brug af newInstance() metoden til klasse klasse
- Ved brug af newInstance() metoden til Konstruktør klasse
- Ved brug af Deserialisering
Brug af nyt søgeord
Bruger ny nøgleord er den mest populære måde at oprette et objekt eller en forekomst af klassen på. Når vi opretter en forekomst af klassen ved at bruge det nye nøgleord, allokerer den hukommelse (heap) til den nyoprettede objekt og returnerer også reference af det objekt til det minde. Det nye nøgleord bruges også til at oprette et array. Syntaksen for at skabe et objekt er:
ClassName object = new ClassName();
Lad os oprette et program, der bruger et nyt nøgleord til at oprette et objekt.
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(); } }
Produktion:
Welcome to javaTpoint
Ved at bruge det nye nøgleord kan vi også kalde konstruktøren (standard eller parametriseret) af klassen.
CreateObjectExample2.java
entitetsrelationel
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(); } }
Produktion:
Welcome to javaTpoint
Brug af clone() metode
Det klone() metode er metoden til Objekt klasse. Den opretter en kopi af et objekt og returnerer den samme kopi. Det JVM opretter et nyt objekt, når metoden clone() aktiveres. Den kopierer alt indholdet af det tidligere oprettede objekt til et nyt objekt. Bemærk, at det ikke kalder nogen konstruktør. Vi skal implementere Kan klones interface, mens du bruger clone() metoden. Metoden kaster CloneNotSupportedException undtagelse, hvis objektets klasse ikke understøtter den Cloneable-grænseflade. De underklasser, der tilsidesætter clone()-metoden, kan give en undtagelse, hvis en instans ikke kan klones.
Bemærk: Metoden opretter en kopi af objektet, ikke et nyt objekt.
Syntaks:
protected Object clone() throws CloneNotSupportedException
Vi bruger følgende sætning til at oprette et nyt objekt.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
klippeværktøj i ubuntu
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(); } } }
Produktion:
New Object Created
Bruger newInstance() Klassemetoden
Det newInstance() metoden i klasseklassen bruges også til at oprette et objekt. Det kalder standardkonstruktøren for at oprette objektet. Det returnerer en nyoprettet forekomst af klassen repræsenteret af objektet. Den bruger internt metoden newInstance() fra Constructor-klassen.
Syntaks:
public T newInstance() throws InstantiationException, IllegalAccessException
Det kaster Illegal AccessException, InstantiationException, ExceptionInInitializerError undtagelser.
Vi kan oprette et objekt på følgende måder:
ClassName object = ClassName.class.newInstance();
Eller
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
I ovenstående erklæring, forName() er en statisk metode i klasseklassen. Den analyserer en parameter klassenavn af typen String. Det returnerer objektet for klassen med det fuldt kvalificerede navn. Den indlæser klassen, men opretter ikke noget objekt. Det kaster ClassNotFoundException hvis klassen ikke kan indlæses og LinkageError hvis koblingen fejler.
For at skabe objektet bruger vi newInstance() metode i klasseklassen. Det virker kun, når vi kender navnet på klassen, og klassen har en offentlig standardkonstruktør.
I det følgende program har vi oprettet et nyt objekt ved hjælp af newInstance() metoden.
CreateObjectExample4.java
ubuntu hvilken kommando
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(); } } }
Produktion:
A new object created.
Bruger newInstance()-metoden fra Constructor-klassen
Det ligner newInstance() metoden til klasse klasse. Det er kendt som en reflekterende måde at skabe objekter på. Metoden er defineret i Konstruktør klasse som er klassen afjava.lang.reflectpakke. Vi kan også kalde den parametriserede konstruktør og private konstruktør ved at bruge newInstance() metode. Det er almindeligt foretrukket i sammenligning med newInstance()-metoden i Class-klassen.
Syntaks:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Metoden analyserer en række objekter som et argument. Værdierne af primitive typer pakket ind i en wrapper Objekt af den passende type. Det returnerer et nyt objekt oprettet ved at kalde konstruktøren. Det kaster IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError Exceptions .
Vi kan oprette et objekt på følgende måde:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Lad os oprette et program, der opretter et objekt ved hjælp af metoden newInstance().
privat vs offentlig java
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(); } } }
Produktion:
JavaTpoint
Brug af deserialisering
I Java, serialisering er processen med at konvertere et objekt til en sekvens af byte-stream. Den omvendte proces (byte-stream til objekt) af serialisering kaldes deserialisering . JVM'en opretter et nyt objekt, når vi serialiserer eller deserialiserer et objekt. Den bruger ikke konstruktør til at oprette et objekt. Mens du bruger deserialisering, Serialiserbar interface (markør interface) skal implementeres i klassen.
Serialisering: Det skriveObject() metoden til ObjectOutputStream klasse bruges til at serialisere et objekt. Det sender objektet til outputstrømmen.
Syntaks:
public final void writeObject(object x) throws IOException
Deserialisering: Metoden readObject() af ObjectInputStream klasse bruges til at deserialisere et objekt. Det refererer til objekter ud af en strøm.
Syntaks:
public final Object readObject() throws IOException,ClassNotFoundException
Bemærk: Gør det arkiverede statisk eller forbigående, hvis vi ikke ønsker at inkludere et felt som en del af objektet. Det vil ikke inkluderes i serialiseringsprocessen.
Lad os forstå serialisering og deserialisering gennem et program.
streng metoder java
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; } }
Vi har oprettet en klasse ved navn Medarbejder hvis formål er at blive serialiseret og deserialiseret.
Serialisering af Java-objekt:
I det følgende program har vi serialiseret et objekt af Employee-klassen ved at bruge skriveObject() metoden i ObjectOutputStream-klassen. Objektets tilstand gemmes i medarbejder.txt fil.
SerialiseringEksempel.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); } } }
Produktion:
Successfully Created
Deserialisering af Java-objekt:
I det følgende program skal vi deserialisere et objekt, som vi har serialiseret i ovenstående program.
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); } } }
Produktion:
198054 Andrew
I ovenstående fem metoder har vi bemærket, at ny søgeord og begge dele newInstance() metoder bruger konstruktøren til at skabe objekter, mens de to andre metoder ikke bruger konstruktøren.