new Operator vs newInstance() metoda v Javě

new Operator vs newInstance() metoda v Javě

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:

new Operator vs newInstance() metoda v Javě

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. 
  • InstantionException dojde, pokud předaná třída neobsahuje výchozí konstruktor jako newInstance() metoda interně volá výchozí konstruktor této konkrétní třídy.  IllegalAccessException dojde, pokud nemáme přístup k definici zadané definice třídy.

Související článek: Reflexe v Javě


Nejlepší Články

Kategorie

Zajímavé Články