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
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.