neuer Operator vs. newInstance()-Methode in Java

neuer Operator vs. newInstance()-Methode in Java

In Java ist new ein Operator, wobei newInstance() eine Methode ist, bei der beide zur Objekterstellung verwendet werden. Wenn wir den Typ des zu erstellenden Objekts kennen, können wir einen neuen Operator verwenden. Wenn wir jedoch den Typ des zu erstellenden Objekts zu Beginn nicht kennen und dieser zur Laufzeit übergeben wird, wird in diesem Fall die Methode newInstance() verwendet.
Im Allgemeinen wird der neue Operator zum Erstellen von Objekten verwendet. Wenn wir jedoch entscheiden möchten, welche Art von Objekt zur Laufzeit erstellt werden soll, können wir den neuen Operator nicht verwenden. In diesem Fall müssen wir das verwenden newInstance()-Methode .

Lassen Sie uns darüber diskutieren neuer Betreiber .  In Java erfolgt die Objekterstellung in den drei aufgeführten Schritten: Objektinstanziierung und Objektinitialisierung Konstruktoraufruf .

Datatype   variable;    

Da wir das Schlüsselwort new verwenden, interpretiert der Compiler die Variable als Objekt

Datatype   object   = new Constructor(); 

Beispiel:

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

Ausgabe
[1 4 3] 

Notiz: Wir können es auch mit dem Konstruktor verwenden, wenn wir Objekte und keine Variablen aufrufen möchten.

Wenn wir uns nun die Methode newInstance() ausdenken, die im Paket java.lang in der Klasse Class vorhanden ist. Wie wir bereits besprochen haben, wird es dort verwendet, wo wir die Klasse aus entfernten Quellen laden. 
Stellen Sie sich ein Szenario vor, in dem wir später eine Verbindung zur Datenbank herstellen und zur Ausführung unser Java-Programm verwenden. Anschaulicher lässt sich das mit dem erklären JDBC Beispiel. Denken Sie daran, dass wir dort das verwendet haben Class.forName() Methode zum dynamischen Laden von Registern und dort haben wir darüber hinaus die Methode newInstance() verwendet, um Objekte dynamisch zu erstellen.  

Beispiel:

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

Ausgabe:

neuer Operator vs. newInstance()-Methode in Java

Ausgabeerklärung: forName() Verfahren gibt die Klasse zurück ' Klasse' Objekt, das wir aufrufen newInstance() Methode, die das Objekt dieser Klasse zurückgibt, das wir als Befehlszeilenargument übergeben. 

  • Wenn die übergebene Klasse nicht existiert, dann ClassNotFoundException wird auftreten. 
  • InstantionException tritt auf, wenn die übergebene Klasse den Standardkonstruktor as nicht enthält newInstance() Die Methode ruft intern den Standardkonstruktor dieser bestimmten Klasse auf.  IllegalAccessException tritt auf, wenn wir keinen Zugriff auf die Definition der angegebenen Klassendefinition haben.

Verwandter Artikel: Reflexion in Java