De gjenstand er en grunnleggende byggestein av en OOPs Språk. I Java , kan vi ikke kjøre noe program uten å lage en gjenstand . Det er ulike måter å opprette en objekt i Java som vi vil diskutere i denne delen, og også lære hvordan lage et objekt i Java.
Java gir fem måter å lage et objekt på.
- Ved hjelp av ny Nøkkelord
- Ved hjelp av klone() metode
- Ved hjelp av newInstance() metoden for Klasse klasse
- Ved hjelp av newInstance() metoden for Konstruktør klasse
- Ved hjelp av Deserialisering
Bruker nytt nøkkelord
Bruker ny nøkkelord er den mest populære måten å lage et objekt eller en forekomst av klassen på. Når vi oppretter en forekomst av klassen ved å bruke det nye nøkkelordet, tildeler den minne (heap) for den nyopprettede gjenstand og returnerer også henvisning av det objektet til det minnet. Det nye nøkkelordet brukes også til å lage en matrise. Syntaksen for å lage et objekt er:
ClassName object = new ClassName();
La oss lage et program som bruker nytt nøkkelord for å lage 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(); } }
Produksjon:
Welcome to javaTpoint
Ved å bruke det nye nøkkelordet kan vi også starte konstruktøren (standard eller parametrisert) til klassen.
CreateObjectExample2.java
relasjonell enhet
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(); } }
Produksjon:
Welcome to javaTpoint
Bruke klone()-metoden
De klone() metode er metoden til Gjenstand klasse. Den lager en kopi av et objekt og returnerer den samme kopien. De JVM oppretter et nytt objekt når clone()-metoden påkalles. Den kopierer alt innholdet til det tidligere opprettede objektet til ett nytt objekt. Merk at den ikke kaller noen konstruktør. Vi må implementere Klonbar grensesnitt mens du bruker klone()-metoden. Metoden kaster CloneNotSupportedException unntak hvis objektets klasse ikke støtter Cloneable-grensesnittet. Underklassene som overstyrer clone()-metoden kan gi et unntak hvis en forekomst ikke kan klones.
Merk: Metoden lager en kopi av objektet, ikke et nytt objekt.
Syntaks:
protected Object clone() throws CloneNotSupportedException
Vi bruker følgende setning for å lage et nytt objekt.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
datamaskin oppfunnet hvilket år
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(); } } }
Produksjon:
New Object Created
Bruker newInstance()-metoden i klasseklassen
De newInstance() metoden til klasseklassen brukes også til å lage et objekt. Den kaller standardkonstruktøren for å lage objektet. Den returnerer en nyopprettet forekomst av klassen representert av objektet. Den bruker internt metoden newInstance() i Constructor-klassen.
Syntaks:
public T newInstance() throws InstantiationException, IllegalAccessException
Den kaster IllegalAccessException, InstantiationException, ExceptionInInitializerError unntak.
Vi kan lage et objekt på følgende måter:
ClassName object = ClassName.class.newInstance();
Eller
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
I uttalelsen ovenfor, forName() er en statisk metode i klasseklassen. Den analyserer en parameter klassenavn av typen String. Den returnerer objektet for klassen med det fullt kvalifiserte navnet. Den laster klassen, men lager ikke noe objekt. Det kaster ClassNotFoundException hvis klassen ikke kan lastes og LinkageError hvis koblingen svikter.
For å lage objektet bruker vi newInstance() metoden til klasseklassen. Det fungerer bare når vi kjenner navnet på klassen og klassen har en offentlig standardkonstruktør.
I det følgende programmet har vi opprettet et nytt objekt ved å bruke 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(); } } }
Produksjon:
A new object created.
Bruker newInstance()-metoden til Constructor-klassen
Det ligner på newInstance() metoden for Klasse klasse. Det er kjent som en reflekterende måte å lage objekter på. Metoden er definert i Konstruktør klasse som er klassen tiljava.lang.reflektpakke. Vi kan også kalle den parameteriserte konstruktøren og den private konstruktøren ved å bruke newInstance() metode. Den er mye foretrukket sammenlignet med newInstance()-metoden i klasseklassen.
Syntaks:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Metoden analyserer en rekke objekter som et argument. Verdiene til primitive typer pakket inn i en wrapper Objekt av passende type. Den returnerer et nytt objekt opprettet ved å kalle konstruktøren. Det kaster IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError Exceptions .
Vi kan lage et objekt på følgende måte:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
La oss lage et program som lager et objekt ved å bruke newInstance()-metoden.
java string replaceall
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(); } } }
Produksjon:
JavaTpoint
Bruker deserialisering
I Java, serialisering er prosessen med å konvertere et objekt til en sekvens av byte-strøm. Den omvendte prosessen (byte-strøm til objekt) av serialisering kalles deserialisering . JVM oppretter et nytt objekt når vi serialiserer eller deserialiserer et objekt. Den bruker ikke konstruktør for å lage et objekt. Mens du bruker deserialisering, Serialiserbar grensesnitt (markørgrensesnitt) må implementeres i klassen.
Serialisering: De skriveobjekt() metoden for ObjectOutputStream klasse brukes til å serialisere et objekt. Den sender objektet til utgangsstrømmen.
Syntaks:
public final void writeObject(object x) throws IOException
Deserialisering: Metoden readObject() av ObjectInputStream klasse brukes til å deserialisere et objekt. Den refererer til objekter ut av en strøm.
Syntaks:
public final Object readObject() throws IOException,ClassNotFoundException
Merk: Gjør det arkiverte statisk eller forbigående hvis vi ikke ønsker å inkludere et felt som en del av objektet. Det vil ikke inkluderes i serialiseringsprosessen.
La oss forstå serialisering og deserialisering gjennom et program.
javascript opplæring
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 opprettet en klasse som heter Ansatt hvis objekt skal serialiseres og deserialiseres.
Serialisering av Java-objekt:
I det følgende programmet har vi serialisert et objekt av klassen Employee ved å bruke skriveobjekt() metoden til ObjectOutputStream-klassen. Tilstanden til objektet lagres i ansatt.txt fil.
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); } } }
Produksjon:
Successfully Created
Deserialisering av Java-objekt:
I det følgende programmet skal vi deserialisere et objekt som vi har serialisert i programmet ovenfor.
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); } } }
Produksjon:
198054 Andrew
I de ovennevnte fem metodene har vi lagt merke til at ny nøkkelord og begge deler newInstance() metoder bruker konstruktøren til å lage objekter, mens de to andre metodene ikke bruker konstruktøren.