A Java, new és un operador on newInstance() és un mètode on tots dos s'utilitzen per a la creació d'objectes. Si sabem el tipus d'objecte que s'ha de crear, podem utilitzar un operador nou, però si no sabem el tipus d'objecte que s'ha de crear al principi i es passa en temps d'execució, en aquest cas s'utilitza el mètode newInstance().
En general, l'operador new s'utilitza per crear objectes, però si volem decidir el tipus d'objecte que es crearà en temps d'execució, no hi ha manera que puguem utilitzar l'operador nou. En aquest cas hem d'utilitzar el mètode newInstance(). .
Parlem de la nou operador . A Java, la creació d'objectes es duu a terme en 3 passos tal com s'indiquen: instanciació d'objectes i inicialització d'objectes i invocació del constructor .
Datatype variable;
Com utilitzarem la paraula clau nova, el compilador interpreta la variable com un objecte
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); } }
Sortida
[1 4 3]
Nota: També el podem utilitzar amb el constructor on volíem anomenar objectes no variables.
Ara, si ens trobem amb el mètode newInstance() que està present dins del paquet java.lang dins de la classe Class. Com ja hem comentat, s'utilitza on carreguem la classe des de fonts remotes.
Penseu en un escenari en què ens connectem a la base de dades més tard utilitzant el nostre programa java per a l'execució. Es pot explicar més evidentment amb el JDBC exemple. Recordeu que allà vam fer servir el Class.forName() mètode per carregar registres dinàmicament i allà vam utilitzar el mètode newInstance() a sobre per crear objectes dinàmicament.
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'); } }
Sortida:

Explicació de la sortida: forName() mètode retorna la classe ' classe' objecte al qual estem cridant nova instància() mètode que retornarà l'objecte d'aquesta classe que estem passant com a argument de línia d'ordres.
- Si la classe aprovada no existeix, aleshores ClassNotFoundException es produirà.
Article relacionat: Reflexió en Java