Rumah  >  Artikel  >  Java  >  Kaedah untuk menyelesaikan pengecualian instantiasi kelas Java (ClassInstantiationException)

Kaedah untuk menyelesaikan pengecualian instantiasi kelas Java (ClassInstantiationException)

WBOY
WBOYasal
2023-08-26 20:12:311329semak imbas

Kaedah untuk menyelesaikan pengecualian instantiasi kelas Java (ClassInstantiationException)

Kaedah untuk menyelesaikan pengecualian instantiasi kelas Java (ClassInstantiationException)

Dalam pengaturcaraan Java, kita sering menghadapi pengecualian instantiation kelas (ClassInstantiationException), iaitu masalah berlaku semasa proses instantiating kelas. Pengecualian ini biasanya berlaku dalam situasi berikut:

  1. kelas tidak mempunyai pembina tanpa parameter
  2. pembina kelas adalah peribadi;
  3. Sebagai tindak balas kepada situasi ini, kami boleh mengambil beberapa kaedah untuk menyelesaikan pengecualian instantiasi kelas.
  4. Pertama sekali, untuk kelas yang tidak mempunyai pembina tanpa parameter, kita boleh menambah pembina tanpa parameter secara manual. Sebagai contoh, katakan terdapat kelas yang dipanggil Orang dengan hanya satu pembina dengan parameter Kita boleh menambah pembina tanpa parameter pada kelas:
  5. public class Person {
        private String name;
        private int age;
    
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public Person() {
            // 无参构造方法
        }
    }
  6. Kemudian, untuk kelas dengan pembina persendirian, kita boleh menggunakan refleksi untuk membuat instantiate objek kelas. Gunakan refleksi untuk memintas sekatan akses dan membuat kelas dengan pembina persendirian. Berikut ialah contoh kod yang menggunakan pantulan untuk membuat instantiate kelas pembina persendirian:
public class Test {
    public static void main(String[] args) throws Exception {
        Class<?> clazz = PrivateClass.class;
        Constructor<?> constructor = clazz.getDeclaredConstructor();
        constructor.setAccessible(true);
        PrivateClass privateClass = (PrivateClass) constructor.newInstance();
    }
}

class PrivateClass {
    private PrivateClass() {
        // 私有构造方法
    }
}

Untuk kelas abstrak dan antara muka, kami tidak boleh membuat instantiatenya secara langsung, tetapi kami boleh membuat instantiatenya dengan mencipta objek subkelas konkrit atau kelas pelaksanaan. Berikut ialah kod sampel untuk membuat instantiate kelas abstrak menggunakan subkelas konkrit:

abstract class AbstractClass {
    // 抽象类
}

class SubClass extends AbstractClass {
    // 具体子类
}

public class Test {
    public static void main(String[] args) {
        AbstractClass abstractClass = new SubClass();
    }
}

Akhir sekali, untuk kelas jenis tatasusunan, kita hanya perlu menggunakan kata kunci baharu untuk membuat instantiate. Berikut ialah kod sampel untuk membuat instantiating kelas jenis tatasusunan:

public class Test {
    public static void main(String[] args) {
        int[] array = new int[10];
    }
}

Ringkasnya, untuk pengecualian instantiation kelas Java, kita boleh menambah pembina tanpa hujah, menggunakan refleksi untuk memintas akses kepada pembina persendirian dan menggunakan subkelas konkrit Abstrak instantiation kelas kelas atau antara muka, gunakan kata kunci baharu untuk membuat contoh kelas jenis tatasusunan dan kaedah lain untuk diselesaikan. Walau bagaimanapun, perlu diingatkan bahawa dalam amalan, penyelesaian yang sesuai harus dipilih mengikut situasi tertentu untuk memastikan ketepatan dan kebolehselenggaraan kod. Saya harap artikel ini dapat memberi anda sedikit bantuan dalam menyelesaikan masalah pengecualian instantiasi kelas Java.

Atas ialah kandungan terperinci Kaedah untuk menyelesaikan pengecualian instantiasi kelas Java (ClassInstantiationException). 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