logo

كيفية إنشاء كائن في جافا

ال هدف هو لبنة البناء الأساسية ل أُووبس لغة. في جافا لا يمكننا تنفيذ أي برنامج دون إنشاء ملف هدف . هناك طريقة مختلفة ل يخترع كائن في جافا التي سنناقشها في هذا القسم، ونتعلمها أيضًا كيفية إنشاء كائن في جافا.

جافا يوفر خمس طرق لإنشاء كائن.

  • استخدام جديد الكلمة الرئيسية
  • استخدام استنساخ () طريقة
  • استخدام مثيل جديد () طريقة فصل فصل
  • استخدام مثيل جديد () طريقة البناء فصل
  • استخدام إلغاء التسلسل

استخدام كلمة رئيسية جديدة

باستخدام جديد الكلمة الأساسية هي الطريقة الأكثر شيوعًا لإنشاء كائن أو مثيل للفئة. عندما نقوم بإنشاء مثيل للفئة باستخدام الكلمة الأساسية الجديدة، فإنه يخصص الذاكرة (الكومة) للفئة التي تم إنشاؤها حديثًا هدف وأيضا إرجاع مرجع من هذا الكائن إلى تلك الذاكرة. يتم استخدام الكلمة الأساسية الجديدة أيضًا لإنشاء مصفوفة. بناء الجملة لإنشاء كائن هو:

 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 

باستخدام الكلمة الأساسية الجديدة، يمكننا أيضًا استدعاء المُنشئ (الافتراضي أو ذو المعلمات) للفئة.

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 

باستخدام طريقة استنساخ ().

ال استنساخ () الطريقة هي الطريقة هدف فصل. يقوم بإنشاء نسخة من كائن وإرجاع نفس النسخة. ال JVM ينشئ كائنًا جديدًا عند استدعاء طريقة clone(). يقوم بنسخ كافة محتويات الكائن الذي تم إنشاؤه مسبقًا إلى كائن واحد جديد. لاحظ أنه لا يستدعي أي منشئ. يجب علينا تنفيذ قابل للاستنساخ الواجهة أثناء استخدام طريقة clone(). يلقي الأسلوب CloneNotSupportedException استثناء إذا كانت فئة الكائن لا تدعم الواجهة القابلة للاستنساخ. يمكن للفئات الفرعية التي تتجاوز طريقة 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 أيضًا لإنشاء كائن. فإنه يستدعي المنشئ الافتراضي لإنشاء الكائن. تقوم بإرجاع مثيل تم إنشاؤه حديثًا للفئة التي يمثلها الكائن. يستخدم داخليًا طريقة newInstance() لفئة المُنشئ.

بناء الجملة:

 public T newInstance() throws InstantiationException, IllegalAccessException 

فإنه يلقي استثناء وصول غير قانوني, InstantiationException, ExceptionInInitializerError استثناءات.

يمكننا إنشاء كائن بالطرق التالية:

 ClassName object = ClassName.class.newInstance(); 

أو

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

في البيان أعلاه، لاسم () هي طريقة ثابتة لفئة الفصل. يقوم بتوزيع المعلمة اسم الفئة من النوع سلسلة. تقوم بإرجاع كائن للفئة بالاسم المؤهل بالكامل. يقوم بتحميل الفئة ولكن لا يقوم بإنشاء أي كائن. يرمي درجة بدون استثنائات إذا كان لا يمكن تحميل الفصل و خطأ الربط إذا فشل الارتباط.

لإنشاء الكائن، نستخدم مثيل جديد () طريقة الطبقة الصف. إنه يعمل فقط عندما نعرف اسم الفصل ويكون للفئة مُنشئ افتراضي عام.

في البرنامج التالي، قمنا بإنشاء كائن جديد باستخدام طريقة 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() لفئة المنشئ

إنه مشابه ل مثيل جديد () طريقة فصل فصل. تُعرف بأنها طريقة عاكسة لإنشاء الأشياء. الطريقة محددة في البناء الطبقة التي هي فئة منjava.lang.reflectطَرد. يمكننا أيضًا استدعاء المنشئ ذي المعلمات والمنشئ الخاص باستخدام التابع مثيل جديد () طريقة. يُفضل على نطاق واسع بالمقارنة مع طريقة 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 

استخدام إلغاء التسلسل

في جافا، التسلسل هي عملية تحويل كائن إلى تسلسل من دفق البايت. يتم استدعاء العملية العكسية (تدفق البايت إلى الكائن) للتسلسل إلغاء التسلسل . يقوم JVM بإنشاء كائن جديد عندما نقوم بإجراء تسلسل أو إلغاء تسلسل كائن. لا يستخدم المنشئ لإنشاء كائن. أثناء استخدام إلغاء التسلسل، قابل للتسلسل يجب تنفيذ الواجهة (واجهة العلامة) في الفصل.

كيفية إنشاء كائن في جافا

التسلسل: ال كائن الكتابة () طريقة ObjectOutputStream يتم استخدام الفئة لإجراء تسلسل كائن. يرسل الكائن إلى دفق الإخراج.

بناء الجملة:

 public final void writeObject(object x) throws IOException 

إلغاء التسلسل: طريقة قراءة الكائن () ل ObjectInputStream يتم استخدام الفئة لإلغاء تسلسل كائن. يشير إلى كائنات خارج الدفق.

سلسلة جافا cmp

بناء الجملة:

 public final Object readObject() throws IOException,ClassNotFoundException 

ملحوظة: اجعل الملف المقدم ثابتًا أو عابرًا إذا لم نرغب في تضمين حقل كجزء من الكائن. لن يتم تضمينه في عملية التسلسل.

دعونا نفهم التسلسل وإلغاء التسلسل من خلال البرنامج.

الموظف.جافا

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

لقد أنشأنا فئة اسمها موظف الذي سيتم إجراء تسلسل وإلغاء تسلسل كائنه.

تسلسل كائن جافا:

في البرنامج التالي، قمنا بإجراء تسلسل لكائن من فئة الموظف باستخدام كائن الكتابة () طريقة فئة ObjectOutputStream. يتم حفظ حالة الكائن في job.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:

في البرنامج التالي، سنقوم بإلغاء تسلسل كائن قمنا بتسلسله في البرنامج أعلاه.

عامل شرطي في جافا

إلغاء التسلسلExample.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 

في الطرق الخمس المذكورة أعلاه، لاحظنا أن جديد الكلمة الرئيسية وكلاهما مثيل جديد () تستخدم الطرق المُنشئ لإنشاء الكائنات، بينما لا تستخدم الطريقتان المتبقيتان المُنشئ.