logo

nowy operator vs metoda newInstance() w Javie

W Javie new jest operatorem, gdzie newInstance() jest metodą, w której obie metody są używane do tworzenia obiektów. Jeśli znamy typ obiektu, który ma zostać utworzony, możemy użyć operatora new, ale jeśli nie znamy typu obiektu, który ma zostać utworzony na początku i zostanie on przekazany w czasie wykonywania, wówczas używana jest metoda newInstance().
Ogólnie rzecz biorąc, operator new służy do tworzenia obiektów, ale jeśli chcemy zdecydować o typie obiektu, który ma zostać utworzony w czasie wykonywania, nie ma możliwości użycia operatora new. W tym wypadku musimy skorzystać z metoda newInstance(). .

Omówmy nowego operatora .  W Javie tworzenie obiektu odbywa się w 3 krokach: utworzenie instancji obiektu i inicjalizacja obiektu oraz wywołanie konstruktora .

Datatype   variable;   

Ponieważ użyjemy słowa kluczowego new, kompilator interpretuje zmienną jako obiekt

Datatype   object   = new Constructor();

Przykład:

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

Wyjście
[1 4 3]

Notatka: Możemy go również użyć z konstruktorem, gdy chcemy wywołać obiekt, a nie zmienne.

Teraz, jeśli wymyślimy metodę newInstance(), która jest obecna w pakiecie java.lang w klasie Class. Jak już wspomnieliśmy, jest on używany tam, gdzie ładujemy klasę ze zdalnych źródeł. 
Rozważmy scenariusz, w którym łączymy się później z bazą danych, używając do wykonania naszego programu Java. Można to wyraźniej wyjaśnić za pomocą JDBC przykład. Pamiętaj, że tam użyliśmy Klasa.dlaNazwy() metoda do dynamicznego ładowania rejestrów, a dodatkowo użyliśmy metody newInstance() do dynamicznego tworzenia obiektów.  

Przykład:

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

Wyjście:

nowy operator vs metoda newInstance() w Javie

Wyjaśnienie wyjścia: dlaNazwa() metoda zwraca klasę ' Klasa' obiekt, do którego dzwonimy nowa instancja() metoda, która zwróci obiekt tej klasy, którą przekazujemy jako argument wiersza poleceń. 

  • Jeśli przekazana klasa nie istnieje, to Wyjątek ClassNotFoundException nastąpi. 
  • Wyjątek natychmiastowywystąpi, jeśli przekazana klasa nie zawiera domyślnego konstruktora as nowa instancja() metoda wewnętrznie wywołuje domyślny konstruktor tej konkretnej klasy. Wyjątek IllegalAccessnastąpi, jeśli nie będziemy mieli dostępu do definicji określonej definicji klasy.

Powiązany artykuł: Odbicie w Javie