Java'da yeni Operatör ve newInstance() Yöntemi

Java'da yeni Operatör ve newInstance() Yöntemi

Java'da new, newInstance()'ın her ikisinin de nesne oluşturmak için kullanıldığı bir yöntem olduğu bir operatördür. Oluşturulacak nesnenin türünü biliyorsak new operatörünü kullanabiliriz ancak başlangıçta oluşturulacak nesnenin türünü bilmiyorsak ve çalışma zamanında iletilirse, bu durumda newInstance() yöntemi kullanılır.
Genel olarak new operatörü nesneleri oluşturmak için kullanılır, ancak çalışma zamanında oluşturulacak nesnenin türüne karar vermek istiyorsak new operatörünü kullanmamızın hiçbir yolu yoktur. Bu durumda şunu kullanmak zorundayız: newInstance() yöntemi .

Gelin tartışalım yeni operatör .  Java'da nesne oluşturma, listelendiği gibi 3 adımda gerçekleşir: nesne örneklemesi ve nesne başlatma ve yapıcı çağrısı .

Datatype   variable;    

New anahtar sözcüğünü kullanacağımız için derleyici değişkeni bir nesne olarak yorumlar.

Datatype   object   = new Constructor(); 

Örnek:

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

Çıkış
[1 4 3] 

Not: Değişkenleri değil nesneyi çağırmak istediğimiz yerde bunu yapıcıyla da kullanabiliriz.

Şimdi Class sınıfının içindeki Java.lang paketinin içinde bulunan newInstance() yöntemini bulursak. Daha önce de tartıştığımız gibi, sınıfı uzak kaynaklardan yüklediğimiz yerde kullanılır. 
Daha sonra yürütme için Java programımızı kullanarak veritabanına bağlandığımız bir senaryo düşünün. ile daha açık bir şekilde açıklanabilir. JDBC örnek. Orada şunu kullandığımızı unutmayın Class.forName() Kayıtları dinamik olarak yüklemek için bir yöntem kullandık ve orada nesneleri dinamik olarak oluşturmak için bunun üzerine newInstance() yöntemini kullandık.  

Örnek:

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

Çıkış:

Java

Çıkış Açıklaması: forName() yöntem ' sınıfını döndürür Sınıf' çağırdığımız nesne yeniÖrnek() Komut satırı argümanı olarak ilettiğimiz sınıfın nesnesini döndürecek yöntem. 

  • Geçilen sınıf mevcut değilse o zaman ClassNotFoundException meydana gelecektir. 
  • InstantionException geçirilen sınıf varsayılan kurucuyu içermiyorsa ortaya çıkar yeniÖrnek() yöntem dahili olarak söz konusu sınıfın varsayılan yapıcısını çağırır.  Yasadışı Erişim İstisnası belirtilen sınıf tanımının tanımına erişimimiz yoksa oluşacaktır.

İlgili Makale: Java'da Yansıma