The obiekt jest podstawowym elementem budulcowym OOP język. W Jawa , nie możemy uruchomić żadnego programu bez utworzenia pliku obiekt . Są na to różne sposoby stworzyć obiekt w Javie które omówimy w tej sekcji, a także się dowiemy jak utworzyć obiekt w Javie.
Jawa udostępnia pięć sposobów tworzenia obiektu.
- Za pomocą nowy Słowo kluczowe
- Za pomocą klon() metoda
- Za pomocą nowa instancja() metoda Klasa klasa
- Za pomocą nowa instancja() metoda Konstruktor klasa
- Za pomocą Deserializacja
Używanie nowego słowa kluczowego
Używając nowy słowo kluczowe jest najpopularniejszym sposobem tworzenia obiektu lub instancji klasy. Kiedy tworzymy instancję klasy za pomocą słowa kluczowego new, przydziela ona pamięć (stertę) dla nowo utworzonej klasy obiekt i również zwraca odniesienie tego obiektu do tej pamięci. Słowo kluczowe new służy również do tworzenia tablicy. Składnia tworzenia obiektu jest następująca:
ClassName object = new ClassName();
Stwórzmy program, który użyje słowa kluczowego new do utworzenia obiektu.
UtwórzObiektPrzykład1.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(); } }
Wyjście:
Welcome to javaTpoint
Używając słowa kluczowego new, możemy także wywołać konstruktor (domyślny lub sparametryzowany) klasy.
UtwórzObiektPrzykład2.java
mapa vs zestaw
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(); } }
Wyjście:
Welcome to javaTpoint
Korzystanie z metody clone().
The klon() metoda to metoda Obiekt klasa. Tworzy kopię obiektu i zwraca tę samą kopię. The JVM tworzy nowy obiekt po wywołaniu metody clone(). Kopiuje całą zawartość wcześniej utworzonego obiektu do nowego obiektu. Należy pamiętać, że nie wywołuje żadnego konstruktora. Musimy wdrożyć Możliwość klonowania interfejs podczas korzystania z metody clone(). Metoda rzuca CloneNotSupportedException wyjątek, jeśli klasa obiektu nie obsługuje interfejsu Cloneable. Podklasy zastępując metodę clone() mogą zgłosić wyjątek, jeśli nie można sklonować instancji.
Uwaga: Metoda tworzy kopię obiektu, a nie nowy obiekt.
Składnia:
protected Object clone() throws CloneNotSupportedException
Aby utworzyć nowy obiekt, używamy poniższej instrukcji.
ClassName newobject = (ClassName) oldobject.clone();
UtwórzObiektPrzykład3.java
równa się metoda w Javie
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(); } } }
Wyjście:
New Object Created
Korzystanie z metody newInstance() klasy Class
The nowa instancja() Metoda klasy Class służy również do tworzenia obiektu. Wywołuje domyślny konstruktor w celu utworzenia obiektu. Zwraca nowo utworzoną instancję klasy reprezentowanej przez obiekt. Wewnętrznie używa metody newInstance() klasy Constructor.
Składnia:
public T newInstance() throws InstantiationException, IllegalAccessException
Rzuca Wyjątek IllegalAccess, InstantiationException, ExceptionInInitializerError wyjątki.
Obiekt możemy stworzyć na następujące sposoby:
ClassName object = ClassName.class.newInstance();
Lub
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
W powyższym oświadczeniu dlaNazwa() jest metodą statyczną klasy Class. Analizuje parametr Nazwa klasy typu String. Zwraca obiekt dla klasy o pełnej nazwie. Ładuje klasę, ale nie tworzy żadnego obiektu. Rzuca Klasa nie znaleziono wyjątku jeśli klasy nie można załadować i Błąd połączenia jeśli połączenie nie powiedzie się.
Aby utworzyć obiekt, używamy nowa instancja() metoda klasy Class. Działa tylko wtedy, gdy znamy nazwę klasy i klasa ma publiczny domyślny konstruktor.
W poniższym programie utworzyliśmy nowy obiekt za pomocą metody newInstance().
UtwórzObiektPrzykład4.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(); } } }
Wyjście:
jaki rozmiar ma ekran mojego monitora
A new object created.
Korzystanie z metody newInstance() klasy Constructor
Jest podobny do nowa instancja() metoda Klasa klasa. Jest to znany jako refleksyjny sposób tworzenia obiektów. Metoda jest zdefiniowana w Konstruktor klasa, która jest klasąjava.lang.reflectpakiet. Możemy również wywołać konstruktora sparametryzowanego i konstruktora prywatnego, używając metody nowa instancja() metoda. Jest powszechnie preferowana w porównaniu z metodą newInstance() klasy Class.
Składnia:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Metoda analizuje tablicę obiektów jako argument. Wartości typów pierwotnych zawinięte w obiekt opakowania odpowiedniego typu. Zwraca nowy obiekt utworzony poprzez wywołanie konstruktora. Rzuca IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, wyjątekExceptionInInitializerError .
Obiekt możemy utworzyć w następujący sposób:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Stwórzmy program, który utworzy obiekt za pomocą metody newInstance().
UtwórzObiektPrzykład5.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(); } } }
Wyjście:
JavaTpoint
Korzystanie z deserializacji
na Jawie, serializacja to proces konwertowania obiektu na sekwencję strumienia bajtów. Nazywa się proces odwrotny (strumień bajtów do obiektu) serializacji deserializacja . JVM tworzy nowy obiekt podczas serializacji lub deserializacji obiektu. Nie używa konstruktora do utworzenia obiektu. Podczas korzystania z deserializacji plik Możliwość serializacji interfejs (interfejs znacznika) musi być zaimplementowany w klasie.
Serializacja: The napiszObiekt() metoda Strumień wyjściowy obiektu klasa służy do serializacji obiektu. Wysyła obiekt do strumienia wyjściowego.
Składnia:
int na ciąg znaków w Javie
public final void writeObject(object x) throws IOException
Deserializacja: Metoda przeczytajObiekt() z Strumień wejściowy obiektu klasa służy do deserializacji obiektu. Odwołuje się do obiektów ze strumienia.
Składnia:
public final Object readObject() throws IOException,ClassNotFoundException
Uwaga: Ustaw pole jako statyczne lub przejściowe, jeśli nie chcemy dołączać pola jako części obiektu. Nie zostanie uwzględniony w procesie serializacji.
Przyjrzyjmy się serializacji i deserializacji poprzez program.
Pracownik.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; } }
Stworzyliśmy klasę o nazwie Pracownik którego obiekt ma być serializowany i deserializowany.
Serializacja obiektu Java:
W poniższym programie serializowaliśmy obiekt klasy Pracownik za pomocą metody napiszObiekt() metoda klasy ObjectOutputStream. Stan obiektu zapisywany jest w pliku pracownik.txt plik.
SerializacjaPrzykład.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); } } }
Wyjście:
sprawić, że skrypt powłoki będzie wykonywalny
Successfully Created
Deserializacja obiektu Java:
W poniższym programie będziemy deserializować obiekt, który serializowaliśmy w powyższym programie.
DeserializacjaPrzykład.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); } } }
Wyjście:
198054 Andrew
W powyższych pięciu metodach zauważyliśmy, że nowy słowo kluczowe i jedno i drugie nowa instancja() metody używają konstruktora do tworzenia obiektów, podczas gdy pozostałe dwie metody nie używają konstruktora.