new Operator vs newInstance()-metoden i Java

new Operator vs newInstance()-metoden i Java

I Java är new en operator där newInstance() är en metod där båda används för att skapa objekt. Om vi ​​vet vilken typ av objekt som ska skapas så kan vi använda en ny operator men om vi inte vet vilken typ av objekt som ska skapas i början och skickas vid körning i det fallet används metoden newInstance().
I allmänhet används den nya operatorn för att skapa objekt men om vi vill bestämma vilken typ av objekt som ska skapas vid körning finns det inget sätt att använda en ny operator. I det här fallet måste vi använda metoden newInstance(). .

Låt oss diskutera ny operatör .  I Java sker objektskapandet i 3 steg enligt listan: objektinstansiering och objektinitiering och konstruktörsanrop .

Datatype   variable;    

Eftersom vi kommer att använda det nya nyckelordet tolkar kompilatorn variabeln som ett objekt

Datatype   object   = new Constructor(); 

Exempel:

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

Produktion
[1 4 3] 

Notera: Vi kan också använda det med konstruktor där vi ville kalla objekt inte variabler.

Om vi ​​nu kommer på metoden newInstance() som finns i java.lang-paketet i klassklassen. Som vi redan diskuterat används den där vi laddar klassen från fjärrkällor. 
Tänk på ett scenario där vi ansluter till databasen senare med vårt java-program för exekvering. Det kan tydligare förklaras med JDBC exempel. Kom ihåg att vi använde den Class.forName() metod för att ladda register dynamiskt och där använde vi metoden newInstance() ovanpå den för att skapa objekt dynamiskt.  

Exempel:

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

Produktion:

new Operator vs newInstance()-metoden i Java

Utgångsförklaring: forName() metod returnerar klassen ' Klass' objekt som vi ringer till newInstance() metod som returnerar objektet för den klassen som vi skickar som ett kommandoradsargument. 

  • Om den godkända klassen inte existerar då ClassNotFoundException kommer att inträffa. 
  • InstantionException kommer att inträffa om den godkända klassen inte innehåller standardkonstruktorn som newInstance() metod anropar internt standardkonstruktorn för den specifika klassen.  IllegalAccessException kommer att inträffa om vi inte har tillgång till definitionen av den angivna klassdefinitionen.

Relaterad artikel: Reflektion i Java