Rumah >Java >javaTutorial >Java newInstance()
Kaedah kelas Java newinstance() muncul dalam gambar apabila kelas perlu mencipta tika baharu secara dinamik. Kaedah ini akan dipanggil di atas kaedah yang sedia ada, iaitu nama .class yang digunakan untuk memuatkan mana-mana kelas secara dinamik. Kaedah newInstance() ini akan dipanggil sebagai tambahan kepada kelas itu untuk mencipta objek secara dinamik. Kaedah newInstance () kelas ini tidak mempertimbangkan sebarang parameter atau hujah daripada kelas, yang bermaksud ia tidak mempunyai sebarang pembina; oleh itu, ia boleh dipanggil pembina no-arg untuk satu kelas.
IKLAN Kursus Popular dalam kategori ini JAVA MASTERY - Pengkhususan | 78 Siri Kursus | 15 Ujian Olok-olokMulakan Kursus Pembangunan Perisian Percuma Anda
Pembangunan web, bahasa pengaturcaraan, ujian perisian & lain-lain
Sintaks
public Tsk newInstance() throws InitiationException, IllegalAccessException
Aliran sintaks terdiri daripada parameter berikut, yang mewakili:
Mana-mana newInstance() kelas atau pembina kedua-duanya dipanggil dan digunakan untuk mencipta tika baharu kelas. Ia sentiasa lebih suka menggunakan kaedah newInstance() pembina daripada menggunakan kaedah newInstance() kelas kerana kaedah newInstance() pembina boleh menggunakan sebarang bilangan argumen yang tidak berlaku dengan newInstance( ) kaedah kelas sebagai kaedah newInstance() kelas tidak mempunyai sebarang hujah yang bermaksud pembina no-arg dalam kelas. Juga, kadangkala ia dibandingkan dan diadun dengan Operator baharu mana-mana kelas.
Aliran kerja kaedah newInstance() adalah dengan cara ini di mana Operator baharu digunakan untuk mencipta objek, dan kemudian keputusan diambil sama ada ia diperlukan untuk mencipta objek pada masa larian atau masa menyusun atau ia sangat diperlukan untuk mencipta objek secara dinamik. Jika diputuskan bahawa objek itu diperlukan untuk dibuat semasa runtime, maka penciptaan Operator baharu akan menjadi samar-samar. Oleh itu, untuk mencipta objek pada masa jalan dan untuk memuatkan objek secara dinamik, ia diperlukan untuk mencipta dan menggunakan kaedah newInstance().
Seperti yang dibincangkan, kaedah newInstance() kelas akan mula-mula mencipta objek jenis kelas dan kemudian dipanggil menggunakan nama .class untuk mencipta tika baharu. Kaedah Class.forName() akan mengembalikan objek untuk kelas, yang akan mengembalikan objek kelas itu yang diluluskan sebagai hujah dan jika kelas yang melepasi parameter tidak wujud, maka ia akan membuang pengecualian ClassNotFoundException.
Pengecualian Instansiasi diikuti dengan lontaran akan dipanggil dan digunakan apabila kaedah secara dalaman memanggil pembina lalai kelas tersebut. IllegalAccessException akan berlaku jika tiada kebolehaksesan kepada kelas yang ditentukan dan ditentukan. Oleh itu kaedah newInstance() kelas disyorkan kerana fleksibiliti dan serba boleh yang disediakan untuk penciptaan newInstance() objek menggunakan pemuatan dinamik. Tingkah laku biasa dan seruan pembina dan objek adalah berbeza dan dipertingkatkan kerana ia tidak termasuk sebarang parameter untuk dihantar kepada kaedah dan objek.
Berikut ialah contoh berikut yang disebut di bawah:
Atur cara ini digunakan untuk menggambarkan kaedah Class.forName dengan kaedah newInstance untuk mencipta objek dan kemudian mencetak objek kelas itu untuk mencetak nilai haiwan dan menciptanya untuk pengecualian.
Kod:
class Animal { int p; } class Birds { int q; } public class NewInstanceTst { public static void sounds(String s) throws InstantiationException, IllegalAccessException, ClassNotFoundException { Object obj_1 = Class.forName(s).newInstance(); System.out.println("Creation of newly instantiated class:" + obj_1.getClass().getName()); } public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException { sounds("Animal"); } }
Output:
Program ini menunjukkan kelas Instance baru Java dengan parameter atau pembina yang lulus. Kemudian ia digunakan untuk peruntukan dinamik objek tetapi tidak digunakan kerana ia akan membuang pengecualian haram. Kelas ujian ditulis dan dilaksanakan untuk mengesahkan sama ada kelas instantiated boleh mengendalikan pemuatan dinamik objek.
Kod:
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class NwInstncWithconstructors { public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Constructor[] constructor_a = Instnace_Constructor_Test.class.getConstructors(); Instnace_Constructor_Test animal = (Instnace_Constructor_Test)constructor_a[0].newInstance(); System.out.println(animal.content); } } class Instnace_Constructor_Test { String content; public Instnace_Constructor_Test() { System.out.println("Create a new Instance:"); content = "new_instance_of_the_value"; } }
Output:
This program also demonstrates the newInstance class of Java. Still, without passing parameters or constructors, it is used for the dynamic allocation of objects seamlessly and makes the overall class flexible for allocation. Still, if not used, it will throw illegal exceptions. A test class is written and executed to verify whether the instantiated class can handle the object’s dynamic loading. This program calls for a no-arg method which means newInstance class directly.
Code:
import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; public class NewInstanceWithout_Constructors { public static void main(String[] args) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException { Constructor[] constructor_without_arr = Without_constructor_Test.class.getConstructors(); Without_constructor_Test sm_ob = (Without_constructor_Test)constructor_without_arr[0] .newInstance("one_field_value"); System.out.println(sm_ob.getthat_value()); } } class Without_constructor_Test { private String that_value; public Without_constructor_Test(String that_value) { this.that_value = that_value; } public String getthat_value() { return that_value; } public void setthat_value(String that_value) { this.that_value = that_value; } }
Output:
Note: It is always recommended to use a newInstance class instead of using a newInstance constructor because it can easily perform dynamic loading of the class and is flexible, unlike the newInstance constructor, which is not at all preferable if used with multiple parameters that too at the run time.newInstance() method of java class is an added advantage as it is used to dynamically load the object without passing multiple parameters, and then it can be used with versatility within the class, and no external method is called at the run time with the help of .classForName method of the class the work gets solved relentlessly.
Atas ialah kandungan terperinci Java newInstance(). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!