new Operator vs newInstance() Methode in Java

new Operator vs newInstance() Methode in Java

In Java is new een operator waarbij newInstance() een methode is waarbij beide worden gebruikt voor het maken van objecten. Als we weten welk type object moet worden gemaakt, kunnen we een nieuwe operator gebruiken, maar als we niet weten welk type object in het begin moet worden gemaakt en dat tijdens runtime wordt doorgegeven, wordt in dat geval de methode newInstance() gebruikt.
Over het algemeen wordt de nieuwe operator gebruikt om objecten te maken, maar als we willen beslissen welk type object tijdens runtime moet worden gemaakt, kunnen we op geen enkele manier de nieuwe operator gebruiken. In dit geval moeten we de newInstance()-methode .

Laten we de nieuwe exploitant .  In Java vindt het maken van objecten plaats in 3 stappen, zoals vermeld: object-instantiatie en object-initialisatie en constructor-aanroep .

Datatype   variable;    

Omdat we het nieuwe trefwoord zullen gebruiken, interpreteert de compiler de variabele als een object

Datatype   object   = new Constructor(); 

Voorbeeld:

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

Uitvoer
[1 4 3] 

Opmerking: We kunnen het ook gebruiken met de constructor, waarbij we objecten en geen variabelen wilden noemen.

Als we nu de newInstance() -methode bedenken die aanwezig is in het java.lang-pakket in de Class-klasse. Zoals we al hebben besproken, wordt het gebruikt wanneer we de klasse van externe bronnen laden. 
Overweeg een scenario waarin we later verbinding maken met de database met behulp van ons Java-programma voor uitvoering. Het kan duidelijker worden verklaard met de JDBC voorbeeld. Onthoud dat we daar de Klasse.voorNaam() methode om registers dynamisch te laden en daar gebruikten we de newInstance() methode erbovenop om objecten dynamisch te maken.  

Voorbeeld:

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

Uitgang:

new Operator vs newInstance() Methode in Java

Uitvoer uitleg: voorNaam() methode geeft de klasse terug ' Klas' object waarop we aanroepen nieuweInstance() methode die het object van die klasse retourneert dat we doorgeven als een opdrachtregelargument. 

  • Als de behaalde klasse niet bestaat, dan ClassNotFoundException zal plaatsvinden. 
  • InstantieUitzondering zal optreden als de doorgegeven klasse niet de standaardconstructor as bevat nieuweInstance() method roept intern de standaardconstructor van die specifieke klasse aan.  Illegaletoegangsuitzondering zal optreden als we geen toegang hebben tot de definitie van de opgegeven klassendefinitie.

Gerelateerd artikel: Reflectie op Java


Top Artikelen

Categorie

Interessante Artikelen