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
Patricia Arquetteasal
2024-11-15 06:13:02192semak imbas

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

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!

Kenyataan:
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