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

عامل جديد مقابل طريقة 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 سيحدث إذا لم نتمكن من الوصول إلى تعريف تعريف الفئة المحددة.

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