Rumah > Java > javaTutorial > Bolehkah Java Menghasilkan Kelas Dengan Hanya Menggunakan Nama Mereka?

Bolehkah Java Menghasilkan Kelas Dengan Hanya Menggunakan Nama Mereka?

Patricia Arquette
Lepaskan: 2024-12-02 12:35:22
asal
628 orang telah melayarinya

Can Java Instantiate Classes Using Only Their Names?

Adakah Penetapan Kelas mengikut Nama Mungkin di Java?

Apabila berurusan dengan instantiasi kelas, keadaan mungkin timbul di mana nama kelas hanya dikenali sebagai seutas tali. Untuk menangani perkara ini, Java menawarkan dua pendekatan untuk menyelesaikan tugasan ini.

Kaedah 1: Menghidupkan dengan Pembina Tanpa Arg

Untuk kelas dengan pembina tanpa hujah, Java membenarkan penciptaan objek menggunakan kaedah Class.forName() untuk mendapatkan semula objek kelas dan kaedah newInstance() untuk mencipta instance.

Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();
Salin selepas log masuk

Kaedah 2: Mengendalikan Kelas dengan atau tanpa No-Arg Constructor

Pendekatan yang lebih komprehensif yang merangkumi semua senario, termasuk kelas tanpa sebarang hujah pembina, melibatkan pertanyaan objek kelas untuk pembinanya dan menggunakan newInstance() pada ia.

Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);
Salin selepas log masuk

Kedua-dua kaedah menggunakan keupayaan pantulan Java. Walau bagaimanapun, adalah penting untuk mengendalikan pengecualian yang mungkin timbul semasa proses ini, seperti:

  • Kelas tidak ditemui atau tidak boleh dimuatkan
  • Kekurangan pembina yang sesuai
  • Pembina melontar pengecualian
  • Pembina bukan awam
  • Keselamatan pengurus menghalang refleksi

Atas ialah kandungan terperinci Bolehkah Java Menghasilkan Kelas Dengan Hanya Menggunakan Nama Mereka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan