logo

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. 
  • InstantionExceptionkommer att inträffa om den godkända klassen inte innehåller standardkonstruktorn som newInstance() metod anropar internt standardkonstruktorn för den specifika klassen. IllegalAccessExceptionkommer att inträffa om vi inte har tillgång till definitionen av den angivna klassdefinitionen.

Relaterad artikel: Reflektion i Java