logo

Jaunā Operator vs newInstance() metode Java

Java versijā new ir operators, kur newInstance () ir metode, kurā objektu izveidei tiek izmantoti abi. Ja mēs zinām izveidojamā objekta veidu, mēs varam izmantot jaunu operatoru, bet, ja mēs nezinām izveidojamā objekta veidu sākumā un tiek nodots izpildes laikā, tādā gadījumā tiek izmantota metode newInstance().
Parasti jauno operatoru izmanto, lai izveidotu objektus, bet, ja mēs vēlamies izlemt, kāda veida objekts tiks izveidots izpildes laikā, mēs nevaram izmantot jauno operatoru. Šajā gadījumā mums ir jāizmanto newInstance() metode .

Ļaujiet mums apspriest jauns operators .  Java objektu izveide notiek 3 soļos, kā norādīts: objekta institucionēšana un objekta inicializācija un konstruktora piesaukšana .

Datatype   variable;   

Tā kā mēs izmantosim jauno atslēgvārdu, kompilators interpretē mainīgo kā objektu

Datatype   object   = new Constructor();

Piemērs:

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

Izvade
[1 4 3]

Piezīme: Mēs to varam izmantot arī ar konstruktoru, kur mēs vēlējāmies izsaukt objektu, nevis mainīgos.

Tagad, ja mēs nākam klajā ar metodi newInstance(), kas atrodas java.lang pakotnē Class klasē. Kā mēs jau apspriedām, tas tiek izmantots, ja mēs ielādējam klasi no attāliem avotiem. 
Apsveriet scenāriju, kurā mēs vēlāk izveidojam savienojumu ar datubāzi, izpildei izmantojot mūsu Java programmu. Acīmredzamāk to var izskaidrot ar JDBC piemērs. Atcerieties, ka mēs izmantojām Class.forName() metodi, lai dinamiski ielādētu reģistrus, un tur mēs izmantojām metodi newInstance (), lai dinamiski izveidotu objektus.  

Piemērs:

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

Izvade:

Jaunā Operator vs newInstance() metode Java

Izvades skaidrojums: forName() metodi atdod klasi' klase' objekts, uz kuru mēs zvanām newInstance() metode, kas atgriezīs šīs klases objektu, kuru mēs nododam kā komandrindas argumentu. 

  • Ja nokārtotā klase neeksistē, tad ClassNotFoundException notiks. 
  • InstantionExceptionnotiks, ja nodotajā klasē nav noklusējuma konstruktora kā newInstance() metode iekšēji izsauc šīs konkrētās klases noklusējuma konstruktoru. IllegalAccessExceptionnotiks, ja mums nebūs piekļuves norādītās klases definīcijas definīcijai.

Saistīts raksts: Pārdomas Java valodā