Uusi Operator vs newInstance() -menetelmä Javassa

Uusi Operator vs newInstance() -menetelmä Javassa

Javassa new on operaattori, jossa newInstance() on menetelmä, jossa molempia käytetään objektien luomiseen. Jos tiedämme luotavan objektin tyypin, voimme käyttää uutta operaattoria, mutta jos emme tiedä luotavan objektin tyyppiä alussa ja se välitetään ajon aikana, siinä tapauksessa käytetään newInstance()-metodia.
Yleensä uutta operaattoria käytetään objektien luomiseen, mutta jos haluamme päättää luotavan objektin tyypin ajon aikana, emme voi käyttää uutta operaattoria. Tässä tapauksessa meidän on käytettävä newInstance() -menetelmä .

Keskustellaanpa uusi operaattori .  Javassa objektin luominen tapahtuu kolmessa luettelossa olevassa vaiheessa: objektin ilmentäminen ja objektin alustus ja rakentajan kutsuminen .

Datatype   variable;    

Koska käytämme uutta avainsanaa, kääntäjä tulkitsee muuttujan objektiksi

Datatype   object   = new Constructor(); 

Esimerkki:

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

Lähtö
[1 4 3] 

Huomautus: Voimme käyttää sitä myös konstruktorin kanssa, kun halusimme kutsua objektia, ei muuttujia.

Jos nyt keksitään newInstance()-metodi, joka on java.lang-paketin sisällä Class-luokassa. Kuten jo keskustelimme, sitä käytetään, kun lataamme luokan etälähteistä. 
Harkitse tilannetta, jossa muodostamme yhteyden tietokantaan myöhemmin käyttämällä Java-ohjelmaamme suorittamista varten. Se voidaan selvemmin selittää kanssa JDBC esimerkki. Muista, että käytimme Class.forName() menetelmällä ladata rekistereitä dynaamisesti ja siellä käytimme newInstance()-metodia sen päällä luomaan objekteja dynaamisesti.  

Esimerkki:

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

Lähtö:

Uusi Operator vs newInstance() -menetelmä Javassa

Lähtöselitys: forName() menetelmä palauttaa luokan luokka' kohde, jota kutsumme newInstance() menetelmä, joka palauttaa sen luokan objektin, jonka välitämme komentoriviargumenttina. 

  • Jos hyväksyttyä luokkaa ei ole olemassa ClassNotFoundException tulee tapahtumaan. 
  • InstantionException tapahtuu, jos hyväksytty luokka ei sisällä oletuskonstruktoria muodossa newInstance() -menetelmä kutsuu sisäisesti kyseisen luokan oletuskonstruktoria.  IllegalAccessException tapahtuu, jos meillä ei ole pääsyä määritetyn luokan määritelmään.

Aiheeseen liittyvä artikkeli: Heijastus Javassa


Top Artikkelit

Luokka

Mielenkiintoisia Artikkeleita