Rumah > Java > javaTutorial > Apakah Perbezaan Utama Antara `Class.forName()` dan `Class.forName().newInstance()` dalam Java?

Apakah Perbezaan Utama Antara `Class.forName()` dan `Class.forName().newInstance()` dalam Java?

Patricia Arquette
Lepaskan: 2024-11-15 06:13:02
asal
215 orang telah melayarinya

What is the Key Difference Between `Class.forName()` and `Class.forName().newInstance()` in Java?

Memahami Perbezaan Antara "Class.forName()" dan "Class.forName().newInstance()"

Dalam Java, kedua-dua Class.forName() dan Class.forName().newInstance() memainkan peranan penting dalam pemuatan kelas dinamik. Walau bagaimanapun, ia mempunyai tujuan yang berbeza.

Class.forName()

Kaedah Class.forName() mengambil nama kelas yang layak sepenuhnya sebagai rentetan dan mengembalikan objek Kelas yang dikaitkan dengan kelas tersebut. Ia melakukan ini dengan menggunakan pemuat kelas untuk mencari fail kelas dan membaca kandungannya. Class.forName() tidak membuat seketika kelas. Ia hanya menyediakan akses kepada metadata dan maklumatnya.

Class.forName().newInstance()

Kaedah Class.forName().newInstance() pula, mencipta contoh baharu kelas yang diwakili oleh objek Kelas dikembalikan oleh Class.forName(). Ia melakukan ini dengan menggunakan pembina lalai kelas.

Contoh:

Mari kita pertimbangkan contoh untuk menggambarkan perbezaan:

package test;

public class Demo {

    public Demo() {
        System.out.println("Hi!");
    }

    public static void main(String[] args) throws Exception {
        Class clazz = Class.forName("test.Demo");
        Demo demo = (Demo) clazz.newInstance();
    }
}
Salin selepas log masuk

Dalam contoh ini:

  • Class Class = Class.forName("test.Demo"): Baris ini memuatkan kelas Demo menggunakan Class.forName(). clazz kini memegang objek Kelas untuk kelas Demo.
  • Demo demo = (Demo) clazz.newInstance(): Baris ini mencipta tika baharu kelas Demo menggunakan Class.forName().newInstance(). Pelakon (Demo) diperlukan kerana clazz.newInstance() mengembalikan Objek.

Perbezaan Utama:

Perbezaan utama antara Class.forName() dan Class.forName() .newInstance() ialah Class.forName() hanya memuatkan kelas, manakala Class.forName().newInstance() bukan sahaja memuatkan kelas tetapi juga mencipta instance kelas tersebut.

Penggunaan Pemuatan Kelas Dinamik Kes:

Class.forName() dan Class.forName().newInstance() biasanya digunakan dalam senario di mana pemuatan kelas dinamik diperlukan. Contohnya termasuk:

  • Pemacu JDBC dimuatkan pada masa jalan berdasarkan keperluan pangkalan data.
  • Bekas EJB dan Servlet memuatkan dan mencipta komponen secara dinamik.
  • Pemalam atau sambungan yang dimuatkan atas permintaan.

Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara `Class.forName()` dan `Class.forName().newInstance()` dalam Java?. 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