logo

ny operatør vs newInstance()-metode i Java

I Java er new en operator, hvor newInstance() er en metode, hvor begge bruges til oprettelse af objekter. Hvis vi kender typen af ​​objekt, der skal oprettes, kan vi bruge en ny operator, men hvis vi ikke kender typen af ​​objekt, der skal oprettes i begyndelsen og videregives ved kørsel, i så fald bruges newInstance()-metoden.
Generelt bruges den nye operatør til at oprette objekter, men hvis vi ønsker at bestemme, hvilken type objekt der skal oprettes ved kørsel, er der ingen måde, vi kan bruge ny operatør. I dette tilfælde skal vi bruge newInstance() metode .

Lad os diskutere ny operatør .  I Java foregår oprettelsen af ​​objekter i 3 trin som angivet: objektinstansering og objektinitialisering og konstruktørindkaldelse .

Datatype   variable;   

Da vi vil bruge det nye nøgleord, fortolker compileren variablen som et objekt

Datatype   object   = new Constructor();

Eksempel:

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]

Note: Vi kan også bruge det med konstruktør, hvor vi ønskede at kalde objekt ikke variabler.

Hvis vi nu kommer med en newInstance()-metode, som er til stede i java.lang-pakken inde i klasseklassen. Som vi allerede har diskuteret, bruges den, hvor vi indlæser klassen fra fjernkilder. 
Overvej et scenario, hvor vi opretter forbindelse til databasen senere ved at bruge vores java-program til udførelse. Det kan tydeligere forklares med JDBC eksempel. Husk der brugte vi Class.forName() metode til at indlæse registre dynamisk, og der brugte vi metoden newInstance() oven på det til at oprette objekter dynamisk.  

Eksempel:

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:

ny operatør vs newInstance()-metode i Java

Output forklaring: forName() metode returnerer klassen ' klasse' objekt, som vi kalder på newInstance() metode, som returnerer objektet for den klasse, som vi sender som et kommandolinjeargument. 

  • Hvis den beståede klasse ikke eksisterer ClassNotFoundException vil forekomme. 
  • InstantionExceptionvil forekomme, hvis den beståede klasse ikke indeholder standardkonstruktøren som newInstance() metode kalder internt standardkonstruktøren for den pågældende klasse. IllegalAccessExceptionvil forekomme, hvis vi ikke har adgang til definitionen af ​​den angivne klassedefinition.

Relateret artikel: Refleksion i Java