logo

Kaip sukurti objektą Java

The objektas yra pagrindinis elementas OOP kalba. Į Java , negalime vykdyti jokios programos nesukūrę objektas . Yra įvairių būdų sukurti an objektas Java kuriuos aptarsime šiame skyriuje, taip pat išmoksime kaip sukurti objektą Java.

Java pateikia penkis būdus, kaip sukurti objektą.

  • Naudojant naujas raktinis žodis
  • Naudojant klonas () metodas
  • Naudojant newInstance() metodas Klasė klasė
  • Naudojant newInstance() metodas Konstruktorius klasė
  • Naudojant Deserializacija

Naudojant naują raktinį žodį

Naudojant naujas raktinis žodis yra populiariausias būdas sukurti objektą ar klasės egzempliorių. Kai sukuriame klasės egzempliorių naudodami naują raktinį žodį, jis paskiria atmintį (krūvą) naujai sukurtam objektas ir taip pat grąžina nuoroda to objekto į tą atmintį. Naujas raktinis žodis taip pat naudojamas kuriant masyvą. Objekto kūrimo sintaksė yra tokia:

 ClassName object = new ClassName(); 

Sukurkime programą, kuri naudoja naują raktinį žodį objektui sukurti.

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(); } } 

Išvestis:

 Welcome to javaTpoint 

Naudodami naują raktinį žodį, taip pat galime iškviesti klasės konstruktorių (numatytąjį arba parametrinį).

CreateObjectExample2.java

junit testų bylos
 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(); } } 

Išvestis:

 Welcome to javaTpoint 

Naudojant klono() metodą

The klonas () metodas yra metodas Objektas klasė. Jis sukuria objekto kopiją ir grąžina tą pačią kopiją. The JVM sukuria naują objektą, kai iškviečiamas klono() metodas. Jis nukopijuoja visą anksčiau sukurto objekto turinį į naują objektą. Atminkite, kad jis neiškviečia jokio konstruktoriaus. Turime įgyvendinti Galima klonuoti sąsaja naudojant klono() metodą. Metodas meta CloneNotSupportedException išimtis, jei objekto klasė nepalaiko Cloneable sąsajos. Poklasiai, kurie nepaiso klono() metodo, gali padaryti išimtį, jei egzemplioriaus negalima klonuoti.

Pastaba: Metodas sukuria objekto kopiją, o ne naują objektą.

Sintaksė:

 protected Object clone() throws CloneNotSupportedException 

Norėdami sukurti naują objektą, naudojame šį teiginį.

 ClassName newobject = (ClassName) oldobject.clone(); 

CreateObjectExample3.java

Virtuali atmintis
 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(); } } } 

Išvestis:

 New Object Created 

Klasės klasės metodo newInstance() naudojimas

The newInstance() Klasės klasės metodas taip pat naudojamas objektui sukurti. Jis iškviečia numatytąjį konstruktorių, kad sukurtų objektą. Jis grąžina naujai sukurtą objekto atstovaujamos klasės egzempliorių. Jis viduje naudoja Constructor klasės metodą newInstance().

Sintaksė:

 public T newInstance() throws InstantiationException, IllegalAccessException 

Tai išmeta IllegalAccessException, InstantiationException, ExceptionInInitializerError išimtis.

Objektą galime sukurti šiais būdais:

 ClassName object = ClassName.class.newInstance(); 

Arba

 ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance(); 

Aukščiau pateiktame pareiškime forName() yra statinis klasės klasės metodas. Jis analizuoja parametrą klasės pavadinimas tipo String. Jis grąžina klasės objektą visiškai apibrėžtu pavadinimu. Jis įkelia klasę, bet nesukuria jokio objekto. Tai meta ClassNotFoundException jei klasės negalima įkelti ir Susiejimo klaida jei sujungimas nepavyksta.

aes vs des

Norėdami sukurti objektą, naudojame newInstance() klasės klasės metodas. Jis veikia tik tada, kai žinome klasės pavadinimą ir klasė turi viešą numatytąjį konstruktorių.

Šioje programoje mes sukūrėme naują objektą naudodami newInstance() metodą.

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(); } } } 

Išvestis:

 A new object created. 

Konstruktorių klasės metodo newInstance() naudojimas

Jis panašus į newInstance() metodas Klasė klasė. Jis žinomas kaip atspindintis būdas kurti objektus. Metodas yra apibrėžtas Konstruktorius klasė, kuri yra klasėjava.lang.reflectpaketą. Taip pat galime iškviesti parametrizuotą konstruktorių ir privatų konstruktorių naudodami newInstance() metodas. Jis yra plačiai naudojamas, palyginti su klasės klasės metodu newInstance().

Sintaksė:

 public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException 

Metodas analizuoja objektų masyvą kaip argumentą. Primityvių tipų reikšmės, įvyniotos į paketą Atitinkamo tipo objektas. Jis grąžina naują objektą, sukurtą iškvietus konstruktorių. Tai meta IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInitializerError Exceptions .

Objektą galime sukurti tokiu būdu:

 Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance(); 

Sukurkime programą, kuri sukuria objektą naudojant newInstance() metodą.

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(); } } } 

Išvestis:

 JavaTpoint 

Deserializacijos naudojimas

Java, serializavimas yra objekto konvertavimo į baitų srauto seką procesas. Vadinamas atvirkštinis serializacijos procesas (baitų srautas į objektą). deserializacija . JVM sukuria naują objektą, kai mes serializuojame arba deserializuojame objektą. Objektui sukurti nenaudojamas konstruktorius. Naudojant deserializaciją, Serializuojama klasėje turi būti įdiegta sąsaja (žymeklio sąsaja).

pervardykite katalogą linux
Kaip sukurti objektą Java

Serializavimas: The writeObject() metodas „ObjectOutputStream“. klasė naudojama objektui suskirstyti. Jis siunčia objektą į išvesties srautą.

Sintaksė:

 public final void writeObject(object x) throws IOException 

Deserializavimas: Metodas readObject() apie „ObjectInputStream“. klasė naudojama objektui deserializuoti. Jis nurodo objektus iš srauto.

Sintaksė:

 public final Object readObject() throws IOException,ClassNotFoundException 

Pastaba: Padarykite pateiktą statinį arba trumpalaikį, jei nenorime įtraukti lauko kaip objekto dalies. Jis nebus įtrauktas į serializavimo procesą.

Supraskime serializavimą ir deserializavimą per programą.

Darbuotojas.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; } } 

Sukūrėme klasę pavadinimu Darbuotojas kurio objektas turi būti serializuojamas ir deserializuojamas.

„Java“ objekto serializavimas:

Šioje programoje mes suskirstėme Darbuotojų klasės objektą naudodami writeObject() ObjectOutputStream klasės metodas. Objekto būsena išsaugoma darbuotojas.txt failą.

nfa pavyzdžiai

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); } } } 

Išvestis:

 Successfully Created 

„Java“ objekto serializavimas:

Šioje programoje mes deserializuosime objektą, kurį suserializavome aukščiau pateiktoje programoje.

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); } } } 

Išvestis:

 198054 Andrew 

Taikydami aukščiau nurodytus penkis metodus pastebėjome, kad naujas raktažodis ir tiek newInstance() metodai naudoja konstruktorių objektams kurti, o kiti du metodai nenaudoja konstruktoriaus.