V Javě je new operátor, kde newInstance() je metoda, kde se oba používají pro vytváření objektů. Pokud známe typ objektu, který má být vytvořen, můžeme použít nový operátor, ale pokud neznáme typ objektu, který má být vytvořen na začátku a je předán za běhu, v tom případě se použije metoda newInstance().
Obecně se operátor new používá k vytváření objektů, ale pokud chceme určit typ objektu, který se má vytvořit za běhu, neexistuje způsob, jak použít nový operátor. V tomto případě musíme použít metoda newInstance(). .
Pojďme diskutovat o nového operátora . V Javě se vytváření objektů provádí ve 3 krocích, jak je uvedeno: konkretizace objektu a inicializace objektu a vyvolání konstruktoru .
Datatype variable;
Protože budeme používat klíčové slovo new, kompilátor interpretuje proměnnou jako objekt
Datatype object = new Constructor();
Pří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 jej použít i s konstruktorem, kde jsme chtěli volat objekt, nikoli proměnné.
Nyní, když přijdeme na metodu newInstance(), která je přítomna v balíčku java.lang ve třídě Class. Jak jsme již probrali, používá se tam, kde načítáme třídu ze vzdálených zdrojů.
Zvažte scénář, kdy se později připojíme k databázi pomocí našeho programu Java. Jasněji to lze vysvětlit pomocí JDBC příklad. Pamatujte, že jsme tam použili Class.forName() metoda k dynamickému načítání registrů a tam jsme nad ní použili metodu newInstance() k dynamickému vytváření objektů.
Pří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:

Vysvětlení výstupu: forName() metoda vrátí třídu ' Třída' objekt, na který voláme newInstance() metoda, která vrátí objekt této třídy, který předáváme, jako argument příkazového řádku.
- Pokud předaná třída neexistuje, pak ClassNotFoundException dojde.
Související článek: Reflexe v Javě