logo

new Operator vs newInstance() metoda u Javi

U Javi new je operator gdje je newInstance() metoda gdje se obje koriste za stvaranje objekta. Ako znamo vrstu objekta koji treba stvoriti tada možemo koristiti novi operator, ali ako ne znamo tip objekta koji treba stvoriti na početku i koji se prosljeđuje tijekom izvođenja, u tom se slučaju koristi metoda newInstance().
Općenito, novi operator se koristi za stvaranje objekata, ali ako želimo odlučiti koji će se objekt kreirati tijekom izvođenja, ne postoji način na koji možemo koristiti novi operator. U ovom slučaju moramo koristiti metoda newInstance(). .

Raspravljajmo o novi operater .  U Javi stvaranje objekta odvija se u 3 navedena koraka: instanciranje objekta i inicijalizacija objekta i pozivanje konstruktora .

Datatype   variable;   

Budući da ćemo koristiti novu ključnu riječ, prevodilac tumači varijablu kao objekt

Datatype   object   = new Constructor();

Primjer:

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

Izlaz
[1 4 3]

Bilješka: Možemo ga koristiti i s konstruktorom gdje želimo zvati objekt, a ne varijable.

Sada ako smislimo metodu newInstance() koja je prisutna unutar java.lang paketa unutar klase Class. Kao što smo već spomenuli, koristi se tamo gdje učitavamo klasu iz udaljenih izvora. 
Razmotrite scenarij u kojem se kasnije povezujemo s bazom podataka koristeći naš java program za izvođenje. To se može jasnije objasniti s JDBC primjer. Sjeti se da smo koristili Class.forName() metoda za dinamičko učitavanje registara i tu smo upotrijebili metodu newInstance() povrh nje za dinamičko stvaranje objekata.  

Primjer:

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

Izlaz:

new Operator vs newInstance() metoda u Javi

Objašnjenje izlaza: zaIme() metoda vraća klasu ' razred' objekt na koji se pozivamo newInstance() metoda koja će vratiti objekt te klase koju prosljeđujemo kao argument naredbenog retka. 

  • Ako prijeđena klasa tada ne postoji ClassNotFoundException dogodit će se. 
  • InstancijaIznimkadogodit će se ako proslijeđena klasa ne sadrži zadani konstruktor kao newInstance() metoda interno poziva zadani konstruktor te određene klase. IllegalAccessExceptiondogodit će se ako nemamo pristup definiciji navedene definicije klase.

Povezani članak: Refleksija u Javi