De objekt är en grundläggande byggsten i en Hoppsan språk. I Java , kan vi inte köra något program utan att skapa en objekt . Det finns olika sätt att skapa en objekt i Java som vi kommer att diskutera i det här avsnittet, och också lära oss hur man skapar ett objekt i Java.
Java ger fem sätt att skapa ett objekt.
- Använder sig av ny Nyckelord
- Använder sig av klona() metod
- Använder sig av newInstance() metod för Klass klass
- Använder sig av newInstance() metod för Konstruktör klass
- Använder sig av Deserialisering
Använder nytt nyckelord
Använda ny nyckelord är det mest populära sättet att skapa ett objekt eller en instans av klassen. När vi skapar en instans av klassen genom att använda det nya nyckelordet, allokerar den minne (hög) för den nyskapade objekt och returnerar också referens av det objektet till det minnet. Det nya nyckelordet används också för att skapa en array. Syntaxen för att skapa ett objekt är:
ClassName object = new ClassName();
Låt oss skapa ett program som använder ett nytt nyckelord för att skapa ett 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
Genom att använda det nya nyckelordet kan vi också anropa konstruktorn (standard eller parametriserad) för klassen.
CreateObjectExample2.java
oföränderlig 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(); } }
Produktion:
Welcome to javaTpoint
Använder metoden clone().
De klona() metod är metoden för Objekt klass. Den skapar en kopia av ett objekt och returnerar samma kopia. De JVM skapar ett nytt objekt när metoden clone() anropas. Den kopierar allt innehåll i det tidigare skapade objektet till ett nytt objekt. Observera att det inte anropar någon konstruktor. Vi måste genomföra Klonbar gränssnitt medan du använder metoden clone(). Metoden kastar CloneNotSupportedException undantag om objektets klass inte stöder gränssnittet Cloneable. Underklasserna som åsidosätter metoden clone() kan skapa ett undantag om en instans inte kan klonas.
Obs! Metoden skapar en kopia av objektet, inte ett nytt objekt.
Syntax:
protected Object clone() throws CloneNotSupportedException
Vi använder följande sats för att skapa ett nytt objekt.
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(); } } }
Produktion:
New Object Created
Använder newInstance() Klassklassmetoden
De newInstance() metod för klassen Class används också för att skapa ett objekt. Den anropar standardkonstruktorn för att skapa objektet. Den returnerar en nyskapad instans av klassen som representeras av objektet. Den använder internt metoden newInstance() i klassen Constructor.
Syntax:
public T newInstance() throws InstantiationException, IllegalAccessException
Det kastar IllegalAccessException, InstantiationException, ExceptionInInitializerError undantag.
Vi kan skapa ett objekt på följande sätt:
ClassName object = ClassName.class.newInstance();
Eller
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
I uttalandet ovan, forName() är en statisk metod av klassklass. Den analyserar en parameter klassnamn av typen String. Den returnerar objektet för klassen med det fullständiga namnet. Den laddar klassen men skapar inget objekt. Det kastar ClassNotFoundException om klassen inte kan laddas och LinkageError om kopplingen misslyckas.
partiell differentiering i latex
För att skapa objektet använder vi newInstance() metod för klassklassen. Det fungerar bara när vi vet namnet på klassen och klassen har en offentlig standardkonstruktor.
I följande program har vi skapat ett nytt objekt med metoden 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(); } } }
Produktion:
A new object created.
Använder metoden newInstance() i Constructor-klassen
Det liknar newInstance() metod för Klass klass. Det är känt som ett reflekterande sätt att skapa föremål. Metoden definieras i Konstruktör klass som är klassen avjava.lang.reflektpaket. Vi kan också anropa den parameteriserade konstruktören och den privata konstruktören genom att använda newInstance() metod. Det är allmänt föredraget i jämförelse med metoden newInstance() i klassen Class.
Syntax:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Metoden analyserar en array av objekt som ett argument. Värdena för primitiva typer inslagna i ett omslagsobjekt av lämplig typ. Den returnerar ett nytt objekt skapat genom att anropa konstruktorn. Det kastar IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError Exceptions .
Vi kan skapa ett objekt på följande sätt:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Låt oss skapa ett program som skapar ett objekt med metoden 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(); } } }
Produktion:
JavaTpoint
Använder deserialisering
I Java, serialisering är processen att omvandla ett objekt till en sekvens av byteström. Den omvända processen (byte-ström till objekt) för serialisering kallas deserialisering . JVM skapar ett nytt objekt när vi serialiserar eller deserialiserar ett objekt. Den använder inte konstruktor för att skapa ett objekt. När du använder deserialisering, Serialiserbar gränssnitt (markörgränssnitt) måste implementeras i klassen.
anslutning java mysql
Serialisering: De writeObject() metod för ObjectOutputStream klass används för att serialisera ett objekt. Den skickar objektet till utgångsströmmen.
Syntax:
public final void writeObject(object x) throws IOException
Deserialisering: Metoden readObject() av ObjectInputStream klass används för att deserialisera ett objekt. Den refererar till objekt ur en ström.
Syntax:
public final Object readObject() throws IOException,ClassNotFoundException
Obs: Gör det arkiverade statiskt eller transient om vi inte vill inkludera ett fält som en del av objektet. Det kommer inte att inkluderas i serialiseringsprocessen.
Låt oss förstå serialisering och deserialisering genom ett program.
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 skapat en klass som heter Anställd vars syfte är att serialiseras och deserialiseras.
Serialisering av Java-objekt:
I följande program har vi serialiserat ett objekt av klassen Employee genom att använda writeObject() metod för klassen ObjectOutputStream. Objektets tillstånd sparas i anställd.txt fil.
kö i java
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); } } }
Produktion:
Successfully Created
Deserialisering av Java Object:
I följande program kommer vi att deserialisera ett objekt som vi har serialiserat i programmet ovan.
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 de fem ovanstående metoderna har vi märkt att ny nyckelord och båda newInstance() metoder använder konstruktorn för att skapa objekt, medan de andra två metoderna inte använder konstruktorn.