logo

méthode new Operator vs newInstance() en Java

En Java, new est un opérateur où newInstance() est une méthode où les deux sont utilisées pour la création d'objets. Si nous connaissons le type d'objet à créer, nous pouvons utiliser un nouvel opérateur, mais si nous ne connaissons pas le type d'objet à créer au début et qu'il est transmis au moment de l'exécution, dans ce cas, la méthode newInstance() est utilisée.
En général, l'opérateur new est utilisé pour créer des objets, mais si nous voulons décider du type d'objet à créer au moment de l'exécution, nous ne pouvons pas utiliser l'opérateur new. Dans ce cas, nous devons utiliser le Méthode newInstance() .

Discutons de nouvel opérateur .  En Java, la création d'objets s'effectue en 3 étapes répertoriées : l'instanciation de l'objet et l'initialisation de l'objet et appel du constructeur .

Datatype   variable;   

Comme nous utiliserons le mot-clé new, le compilateur interprète la variable comme un objet

Datatype   object   = new Constructor();

Exemple:

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

Sortir
[1 4 3]

Note: Nous pouvons également l'utiliser avec un constructeur lorsque nous voulions appeler un objet et non des variables.

Maintenant, si nous proposons la méthode newInstance() qui est présente dans le package java.lang à l’intérieur de la classe Class. Comme nous l'avons déjà évoqué, il est utilisé lorsque nous chargeons la classe à partir de sources distantes. 
Considérons un scénario dans lequel nous nous connectons ultérieurement à la base de données en utilisant notre programme Java pour l'exécution. Cela peut être expliqué de manière plus évidente avec le JDBC exemple. Rappelez-vous que nous avons utilisé le Classe.forName() méthode pour charger les registres dynamiquement et là, nous avons utilisé la méthode newInstance() par-dessus pour créer des objets dynamiquement.  

Exemple:

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

Sortir:

méthode new Operator vs newInstance() en Java

Explication de la sortie : pourNom() méthode renvoie la classe ' Classe' objet sur lequel nous faisons appel nouvelleInstance() méthode qui renverra l’objet de cette classe que nous transmettons comme argument de ligne de commande. 

  • Si la classe réussie n'existe pas, alors ClassNotFoundException se produira. 
  • Exception d'instantanése produira si la classe passée ne contient pas le constructeur par défaut comme nouvelleInstance() La méthode appelle en interne le constructeur par défaut de cette classe particulière. Exception d'accès illégalse produira si nous n'avons pas accès à la définition de la définition de classe spécifiée.

Article connexe : Réflexion en Java