The обект е основен градивен елемент на an OOPs език. в Java , не можем да изпълним нито една програма, без да създадем обект . Има различни начини за създайте обект в Java които ще обсъдим в този раздел и ще научим как да създадете обект в Java.
Java предлага пет начина за създаване на обект.
- Използвайки нов Ключова дума
- Използвайки клонинг() метод
- Използвайки newInstance() метод на Клас клас
- Използвайки newInstance() метод на Конструктор клас
- Използвайки Десериализация
Използване на нова ключова дума
Използвайки нов ключовата дума е най-популярният начин за създаване на обект или екземпляр от класа. Когато създаваме екземпляр на класа с помощта на ключовата дума new, той разпределя памет (купчина) за новосъздадения обект и също връща справка на този обект към тази памет. Ключовата дума new също се използва за създаване на масив. Синтаксисът за създаване на обект е:
ClassName object = new ClassName();
Нека създадем програма, която използва нова ключова дума за създаване на обект.
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
знак към int в 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();
В горното изявление, заИме() е статичен метод на клас клас. Той анализира параметър 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(); } } }
Изход:
mamta kulkarni
A new object created.
Използване на метода newInstance() на клас Constructor
То е подобно на newInstance() метод на Клас клас. Известен е като отразяващ начин за създаване на обекти. Методът е дефиниран в Конструктор клас, който е класът наjava.lang.reflectпакет. Можем също да извикаме параметризирания конструктор и частния конструктор, като използваме newInstance() метод. Той е широко предпочитан в сравнение с метода newInstance() на класа Class.
Синтаксис:
public T newInstance(Object... initargs) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException
Методът анализира масив от обекти като аргумент. Стойностите на примитивните типове, обвити в обвивка Обект от съответния тип. Той връща нов обект, създаден чрез извикване на конструктора. Хвърля се Изключения IllegalAccessException, IllegalArgumentException, InstantiationException, InvocationTargetException, ExceptionInInitializerError .
Можем да създадем обект по следния начин:
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(); } } }
Изход:
JavaTpoint
Използване на десериализация
В Java, сериализация е процес на преобразуване на обект в последователност от байт-поток. Извиква се обратният процес (поток от байт към обект) на сериализация десериализация . JVM създава нов обект, когато сериализираме или десериализираме обект. Не използва конструктор за създаване на обект. Докато използвате десериализация, Може да се сериализира интерфейс (интерфейс на маркер) трябва да бъде внедрен в класа.
Сериализация: The writeObject() метод на ObjectOutputStream клас се използва за сериализиране на обект. Той изпраща обекта към изходния поток.
Синтаксис:
групиране
public final void writeObject(object x) throws IOException
Десериализация: Методът readObject() на ObjectInputStream клас се използва за десериализация на обект. Той препраща към обекти извън поток.
Синтаксис:
public final Object readObject() throws IOException,ClassNotFoundException
Забележка: Направете полето статично или преходно, ако не искаме да включим поле като част от обекта. Няма да се включи в процеса на сериализация.
Нека разберем сериализацията и десериализацията чрез програма.
Служител.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 обект:
В следващата програма ние сериализирахме обект от клас 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); } } }
Изход:
java е празна
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() методите използват конструктора за създаване на обекти, докато останалите два метода не използват конструктора.