new Operator v primerjavi z metodo newInstance() v Javi

new Operator v primerjavi z metodo newInstance() v Javi

V Javi je new operator, kjer je newInstance() metoda, kjer se oba uporabljata za ustvarjanje objekta. Če poznamo vrsto predmeta, ki ga je treba ustvariti, lahko uporabimo nov operator, če pa ne poznamo tipa predmeta, ki naj bi bil ustvarjen na začetku in se posreduje med izvajanjem, se v tem primeru uporabi metoda newInstance().
Na splošno se operator new uporablja za ustvarjanje objektov, vendar če se želimo odločiti o vrsti predmeta, ki bo ustvarjen med izvajanjem, ne moremo uporabiti operatorja new. V tem primeru moramo uporabiti metoda newInstance(). .

Razpravljajmo o nov operater .  V Javi ustvarjanje objekta poteka v treh korakih, kot je navedeno: instanciranje objekta in inicializacija objekta ter priklic konstruktorja .

Datatype   variable;    

Ker bomo uporabili novo ključno besedo, prevajalnik interpretira spremenljivko kot objekt

Datatype   object   = new Constructor(); 

primer:

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

Izhod
[1 4 3] 

Opomba: Lahko ga uporabimo tudi s konstruktorjem, kjer želimo poklicati objekt in ne spremenljivke.

Zdaj, če pridemo do metode newInstance(), ki je prisotna znotraj paketa java.lang znotraj razreda razreda. Kot smo že omenili, se uporablja tam, kjer naložimo razred iz oddaljenih virov. 
Razmislite o scenariju, kjer se pozneje povežemo z bazo podatkov z uporabo našega programa java za izvajanje. To je mogoče bolj očitno razložiti z JDBC primer. Ne pozabite, da smo tam uporabili Class.forName() metodo za dinamično nalaganje registrov in poleg nje smo uporabili metodo newInstance() za dinamično ustvarjanje objektov.  

primer:

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

Izhod:

new Operator v primerjavi z metodo newInstance() v Javi

Izhodna razlaga: forName() metoda vrne razred ' razred' objekt, na katerega kličemo newInstance() metoda, ki bo vrnila objekt tega razreda, ki ga posredujemo kot argument ukazne vrstice. 

  • Če opravljeni razred ne obstaja, potem ClassNotFoundException se bo pojavilo. 
  • InstantionException se bo zgodilo, če posredovani razred ne vsebuje privzetega konstruktorja kot newInstance() metoda interno pokliče privzeti konstruktor tega določenega razreda.  IllegalAccessException se bo zgodilo, če nimamo dostopa do definicije podane definicije razreda.

Sorodni članek: Odsev v Javi