új Operator vs newInstance() metódus Java-ban

új Operator vs newInstance() metódus Java-ban

A Java-ban a new egy operátor, ahol a newInstance() egy olyan metódus, ahol mindkettőt objektumok létrehozására használják. Ha ismerjük a létrehozandó objektum típusát, akkor használhatunk új operátort, de ha nem ismerjük a létrehozandó objektum típusát az elején, és futás közben átadjuk, akkor a newInstance() metódus kerül felhasználásra.
Általában az új operátort használják objektumok létrehozására, de ha futás közben akarjuk eldönteni, hogy milyen típusú objektumot kell létrehozni, akkor nincs mód új operátor használatára. Ebben az esetben a newInstance() metódus .

Beszéljük meg a új üzemeltető .  Java-ban az objektumok létrehozása 3 lépésben történik a felsoroltak szerint: objektum példányosítás és objektum inicializálás és konstruktor meghívás .

Datatype   variable;    

Mivel az új kulcsszót fogjuk használni, a fordító a változót objektumként értelmezi

Datatype   object   = new Constructor(); 

Példa:

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

Kimenet
[1 4 3] 

Jegyzet: Használhatjuk konstruktorral is, ahol objektumot akartunk hívni, nem változót.

Most, ha kitaláljuk a newInstance() metódust, amely a java.lang csomagban található a Class osztályon belül. Ahogy már említettük, akkor használják, amikor az osztályt távoli forrásokból töltjük be. 
Tekintsünk egy olyan forgatókönyvet, amikor később a java programunk segítségével csatlakozunk az adatbázishoz a végrehajtáshoz. Nyilvánvalóbban megmagyarázható a JDBC példa. Ne feledje, ott használtuk a Class.forName() metódus a regiszterek dinamikus betöltésére, és ott a newInstance() metódust használtuk az objektumok dinamikus létrehozásához.  

Példa:

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

Kimenet:

új Operator vs newInstance() metódus Java-ban

Kimenet magyarázata: forName() módszer visszaadja az osztályt Osztály' tárgyat, amelyre hívunk újPéldány() metódus, amely visszaadja annak az osztálynak az objektumát, amelyet parancssori argumentumként adunk át. 

  • Ha az átadott osztály nem létezik, akkor ClassNotFoundException fog bekövetkezni. 
  • InstantionException akkor fordul elő, ha az átadott osztály nem tartalmazza az alapértelmezett konstruktort, mint újPéldány() metódus belsőleg meghívja az adott osztály alapértelmezett konstruktorát.  IllegalAccessException akkor fordul elő, ha nem férünk hozzá a megadott osztálydefiníció definíciójához.

Kapcsolódó cikk: Reflexió Java nyelven