V Jave je new operátor, kde newInstance() je metóda, kde sa na vytváranie objektov používajú obe. Ak poznáme typ objektu, ktorý sa má vytvoriť, môžeme použiť operátor new, ale ak nepoznáme typ objektu, ktorý sa má vytvoriť na začiatku a ktorý sa odovzdáva za behu, použije sa metóda newInstance().
Vo všeobecnosti sa operátor new používa na vytváranie objektov, ale ak chceme rozhodnúť o type objektu, ktorý sa má vytvoriť za behu, nie je možné použiť operátor new. V tomto prípade musíme použiť metóda newInstance(). .
Poďme diskutovať o nového operátora . V Java sa vytváranie objektov uskutočňuje v 3 krokoch, ako je uvedené: inštancia objektu a inicializácia objektu a vyvolanie konštruktora .
Datatype variable;
Keďže budeme používať kľúčové slovo new, kompilátor interpretuje premennú ako objekt
Datatype object = new Constructor();
Príklad:
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); } }
Výstup
[1 4 3]
Poznámka: Môžeme ho použiť aj s konštruktorom, kde sme chceli volať objekt, nie premenné.
Teraz, ak prídeme na metódu newInstance(), ktorá je prítomná v balíku java.lang v triede Class. Ako sme už diskutovali, používa sa tam, kde načítavame triedu zo vzdialených zdrojov.
Zvážte scenár, v ktorom sa neskôr pripojíme k databáze pomocou nášho programu Java na vykonanie. Zreteľnejšie sa to dá vysvetliť pomocou JDBC príklad. Pamätajte, že sme tam použili Class.forName() metódu na dynamické načítanie registrov a tam sme nad ňou použili metódu newInstance() na dynamické vytváranie objektov.
Príklad:
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'); } }
výstup:

Vysvetlenie výstupu: forName() metóda vráti triedu ' trieda objekt, na ktorý voláme newInstance() metóda, ktorá vráti objekt tejto triedy, ktorý odovzdávame, ako argument príkazového riadka.
- Ak odovzdaná trieda neexistuje, potom ClassNotFoundException dôjde.
Súvisiaci článok: Reflexia v Jave