logo

عامل جديد مقابل طريقة newInstance () في Java

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

دعونا نناقش مشغل جديد .  في Java، يتم إنشاء الكائن في ثلاث خطوات كما هو مذكور: إنشاء مثيل للكائن وتهيئة الكائن و استدعاء المنشئ .

Datatype   variable;   

بما أننا سنستخدم الكلمة الأساسية الجديدة، فسيقوم المترجم بتفسير المتغير ككائن

Datatype   object   = new Constructor();

مثال:

Java
// Java Program to Illustrate new Operator // Importing required classes  import java.util.*; // Main class class GFG {  // Main drive method  public static void main(String[] args)  {  // List   al;  // Ny now al is just a variable  // Now creating object using new operator  List<Integer> al = new ArrayList<>();  // Adding elements to above List  al.add(1);  al.add(4);  al.add(3);  // Printing elements of List  System.out.print(al);  } } 

الإخراج
[1 4 3]

ملحوظة: يمكننا استخدامه مع المُنشئ أيضًا حيث أردنا استدعاء الكائن وليس المتغيرات.

الآن إذا توصلنا إلى طريقة newInstance() الموجودة داخل حزمة java.lang داخل فئة Class. كما ناقشنا بالفعل، يتم استخدامه حيث نقوم بتحميل الفصل من مصادر بعيدة. 
فكر في سيناريو حيث نتصل بقاعدة البيانات لاحقًا باستخدام برنامج جافا الخاص بنا للتنفيذ. ويمكن تفسير ذلك بشكل أكثر وضوحا مع JDBC مثال. تذكر هناك استخدمنا Class.forName() طريقة لتحميل السجلات ديناميكيًا وهناك استخدمنا طريقة newInstance() فوقها لإنشاء كائنات ديناميكيًا.  

مثال:

Java
// Java Program to Demonstrate Working of newInstance() // Method present inside java.lang.Class // Class 1 // Class 2 class A {  int a; } class B {  int b; } // Class 3 // Main class public class GFG {  // Method 1  // To create an instance of class whose name is  // passed as a string 'c'.  public static void fun(String c)  throws InstantiationException  IllegalAccessException  ClassNotFoundException  {  // Creating an object of type 'c'  Object obj = Class.forName(c).newInstance();  // Printing the type of object created  System.out.println('Object created for class:'  + obj.getClass().getName());  }  // Method 2  // Main driver method  public static void main(String[] args)  throws InstantiationException  IllegalAccessException  ClassNotFoundException  {  // Calling above method over 'A'  fun('A');  } } 

الإخراج:

عامل التشغيل الجديد مقابل طريقة newInstance () في Java

شرح الإخراج: لاسم () طريقة إرجاع الصف " فصل' الكائن الذي نتصل عليه مثيل جديد () الطريقة التي ستعيد كائن تلك الفئة التي نمررها كوسيطة سطر أوامر. 

  • إذا كانت الفئة التي تم تمريرها غير موجودة بعد ذلك ClassNotFoundException سوف يحدث. 
  • InstantionExceptionسيحدث إذا كانت الفئة التي تم تمريرها لا تحتوي على المُنشئ الافتراضي as مثيل جديد () تستدعي الطريقة داخليًا المُنشئ الافتراضي لتلك الفئة المعينة. IllegalAccessExceptionسيحدث إذا لم نتمكن من الوصول إلى تعريف تعريف الفئة المحددة.

مقالة ذات صلة: الانعكاس في جافا