logo

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. 
  • InstantieUitzonderingzal optreden als de doorgegeven klasse niet de standaardconstructor as bevat nieuweInstance() method roept intern de standaardconstructor van die specifieke klasse aan. Illegaletoegangsuitzonderingzal optreden als we geen toegang hebben tot de definitie van de opgegeven klassendefinitie.

Gerelateerd artikel: Reflectie op Java