In Java new è un operatore dove newInstance() è un metodo in cui entrambi vengono utilizzati per la creazione di oggetti. Se conosciamo il tipo di oggetto da creare allora possiamo utilizzare un operatore new ma se non conosciamo il tipo di oggetto da creare all'inizio e viene passato in fase di runtime in quel caso viene utilizzato il metodo newInstance().
In generale l'operatore new viene utilizzato per creare oggetti ma se vogliamo decidere il tipo di oggetto da creare in fase di runtime non è possibile utilizzare l'operatore new. In questo caso dobbiamo usare il file metodo newInstance() .
Parliamo di nuovo operatore . In Java la creazione dell'oggetto avviene in 3 passaggi come elencato: istanziazione dell'oggetto e inizializzazione dell'oggetto e invocazione del costruttore .
Datatype variable;
Poiché utilizzeremo la parola chiave new, il compilatore interpreta la variabile come un oggetto
Datatype object = new Constructor();
Esempio:
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); } }
Produzione
[1 4 3]
Nota: Possiamo usarlo anche con il costruttore dove vogliamo chiamare oggetti e non variabili.
Ora se troviamo il metodo newInstance() che è presente nel pacchetto java.lang all'interno della classe Class. Come abbiamo già discusso, viene utilizzato quando carichiamo la classe da fonti remote.
Considera uno scenario in cui ci colleghiamo al database in seguito utilizzando il nostro programma Java per l'esecuzione. Può essere spiegato più evidentemente con il JDBC esempio. Ricorda che lì abbiamo usato il file Classe.perNome() per caricare i registri in modo dinamico e lì abbiamo utilizzato il metodo newInstance() per creare oggetti in modo dinamico.
Esempio:
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'); } }
Produzione:

Spiegazione dell'uscita: perNome() metodo restituisce la classe ' Classe' oggetto su cui stiamo chiamando nuova istanza() metodo che restituirà l'oggetto di quella classe che stiamo passando come argomento della riga di comando.
- Se la classe passata non esiste allora ClassNotFoundException accadrà.
Articolo correlato: Riflessione in Giava