The об'єкт є основним будівельним блоком an ООП мова. в Java , ми не можемо виконати жодну програму без створення об'єкт . Є різні способи створити об'єкт в Java які ми обговоримо в цьому розділі, а також дізнаємося як створити об'єкт на Java.
Java надає п'ять способів створення об'єкта.
- Використання новий Ключове слово
- Використання клонувати() метод
- Використання newInstance() метод Клас клас
- Використання newInstance() метод Конструктор клас
- Використання Десеріалізація
Використання нового ключового слова
Використовуючи новий Ключове слово є найпопулярнішим способом створення об'єкта або екземпляра класу. Коли ми створюємо екземпляр класу за допомогою ключового слова new, він виділяє пам’ять (купу) для новоствореного об'єкт а також повертає посилання цього об’єкта до цієї пам’яті. Ключове слово new також використовується для створення масиву. Синтаксис створення об’єкта:
ClassName object = new ClassName();
Давайте створимо програму, яка використовує ключове слово new для створення об’єкта.
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(); } }
Вихід:
Welcome to javaTpoint
Використовуючи ключове слово new, ми також можемо викликати конструктор (за замовчуванням або параметризований) класу.
CreateObjectExample2.java
карта проти набору
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(); } }
Вихід:
Welcome to javaTpoint
Використання методу clone().
The клонувати() метод є метод Об'єкт клас. Він створює копію об’єкта та повертає ту саму копію. The JVM створює новий об’єкт під час виклику методу clone(). Він копіює весь вміст раніше створеного об'єкта в новий об'єкт. Зверніть увагу, що він не викликає жодного конструктора. Ми повинні реалізувати Можливість клонування під час використання методу clone(). Метод кидків CloneNotSupportedException виняток, якщо клас об'єкта не підтримує інтерфейс Cloneable. Підкласи, які замінюють метод clone(), можуть викликати виняток, якщо екземпляр не можна клонувати.
Примітка. Метод створює копію об’єкта, а не новий об’єкт.
Синтаксис:
protected Object clone() throws CloneNotSupportedException
Ми використовуємо наступний оператор для створення нового об’єкта.
ClassName newobject = (ClassName) oldobject.clone();
CreateObjectExample3.java
рядок конвертера на дату
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(); } } }
Вихід:
New Object Created
Використання методу newInstance() класу Class
The newInstance() метод класу Class також використовується для створення об'єкта. Він викликає конструктор за замовчуванням для створення об’єкта. Він повертає щойно створений екземпляр класу, представленого об’єктом. Він внутрішньо використовує метод newInstance() класу Constructor.
Синтаксис:
public T newInstance() throws InstantiationException, IllegalAccessException
Це кидає IllegalAccessException, InstantiationException, ExceptionInInitializerError винятки.
Ми можемо створити об’єкт такими способами:
ClassName object = ClassName.class.newInstance();
Або
ClassName object = (ClassName) Class.forName('fully qualified name of the class').newInstance();
У наведеній вище заяві forName() є статичним методом класу Class. Він аналізує параметр className типу String. Він повертає об’єкт для класу з повним іменем. Він завантажує клас, але не створює жодного об’єкта. Це кидає ClassNotFoundException якщо клас не може бути завантажений і LinkageError якщо з’єднання виходить з ладу.
Щоб створити об’єкт, ми використовуємо newInstance() метод класу Class. Це працює лише тоді, коли ми знаємо ім’я класу і клас має загальнодоступний конструктор за замовчуванням.
У наступній програмі ми створюємо новий об’єкт за допомогою методу 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(); } } }
Вихід:
A new object created.
Використання методу newInstance() класу Constructor
Це схоже на newInstance() метод Клас клас. Він відомий як рефлексивний спосіб створення об’єктів. Метод визначено в Конструктор клас, який є класомjava.lang.reflectпакет. Ми також можемо викликати параметризований конструктор і приватний конструктор за допомогою newInstance() метод. Його перевага надається переважно порівняно з методом newInstance() класу Class.
Синтаксис:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Метод аналізує масив об’єктів як аргумент. Значення примітивних типів загорнуті в обгортку Object відповідного типу. Він повертає новий об’єкт, створений викликом конструктора. Це кидає Винятки IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError .
string.contains java
Ми можемо створити об'єкт наступним чином:
Constructor constructor = Employee.class.getConstructor(); Employee emp3 = constructor.newInstance();
Давайте створимо програму, яка створює об’єкт за допомогою методу 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(); } } }
Вихід:
такі сайти, як bedpage
JavaTpoint
Використання десеріалізації
На Java, серіалізація це процес перетворення об'єкта в послідовність потоку байтів. Викликається зворотний процес (від потоку байтів до об’єкта) серіалізації десеріалізація . JVM створює новий об’єкт, коли ми серіалізуємо або десеріалізуємо об’єкт. Він не використовує конструктор для створення об’єкта. Використовуючи десеріалізацію, Серіалізований інтерфейс (інтерфейс маркера) повинен бути реалізований у класі.
Серіалізація: The writeObject() метод ObjectOutputStream клас використовується для серіалізації об'єкта. Він надсилає об’єкт у вихідний потік.
Синтаксис:
public final void writeObject(object x) throws IOException
Десеріалізація: Метод readObject() з ObjectInputStream клас використовується для десеріалізації об'єкта. Він посилається на об’єкти з потоку.
Синтаксис:
public final Object readObject() throws IOException,ClassNotFoundException
Примітка. Зробіть поле статичним або тимчасовим, якщо ми не хочемо включати поле як частину об’єкта. Це не буде включено в процес серіалізації.
Давайте розберемося з серіалізацією та десеріалізацією за допомогою програми.
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; } }
Ми створили клас під назвою Співробітник чий об'єкт має бути серіалізований і десеріалізований.
java підключається до mysql
Серіалізація об'єкта Java:
У наступній програмі ми серіалізували об’єкт класу Employee за допомогою writeObject() метод класу ObjectOutputStream. Стан об'єкта зберігається в працівник.txt файл.
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); } } }
Вихід:
Successfully Created
Десеріалізація об'єкта Java:
У наведеній нижче програмі ми збираємося десеріалізувати об’єкт, серіалізований у наведеній вище програмі.
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); } } }
Вихід:
198054 Andrew
У наведених вище п’яти методах ми помітили, що новий ключове слово та обидва newInstance() Методи використовують конструктор для створення об’єктів, а решта два методи не використовують конструктор.