Rumah  >  Artikel  >  Java  >  Apakah punca biasa UnsupportedOperationException di Java?

Apakah punca biasa UnsupportedOperationException di Java?

WBOY
WBOYasal
2023-06-25 10:46:371851semak imbas

Apakah punca biasa UnsupportedOperationException di Java?

UnsupportedOperationException dalam Java ialah pengecualian masa jalan yang biasanya menggesa bahawa operasi tidak disokong atau tidak sah. Ramai pembangun mungkin menghadapi pengecualian ini semasa membangunkan aplikasi Java Jadi, apakah sebab untuk pengecualian ini? . Apabila cuba mengubah suai objek tidak berubah ini, UnsupportedOperationException dilemparkan.

    Sebagai contoh, jika kita mencipta objek koleksi Senarai tidak berubah:
  1. List<Integer> list = Arrays.asList(1, 2, 3);
  2. Kemudian jika kita cuba mengubah suainya, UnsupportedOperationException akan dilemparkan:
list.remove(0); //抛出UnsupportedOperationException异常

Kaedah yang tidak dilaksanakan

dalam kelas abstrak, dan anda boleh menggunakan antara muka dalam Java , untuk menentukan beberapa kaedah yang tidak dilaksanakan, yang perlu dilaksanakan oleh subkelas yang diwarisi atau dilaksanakan. Jika subkelas tidak melaksanakan kaedah ini, atau kaedah yang dilaksanakan tidak memenuhi keperluan, UnsupportedOperationException mungkin dilemparkan.

    Sebagai contoh, kami mentakrifkan kelas abstrak Haiwan:
  1. public abstract class Animal {
        public abstract void eat();
        public void run() {
            throw new UnsupportedOperationException("不支持run操作");
        }
    }
  2. Antaranya, kaedah larian ialah kaedah yang tidak dilaksanakan, yang perlu dilaksanakan dalam subkelas. Walau bagaimanapun, jika kita tidak melaksanakan kaedah larian dalam subkelas, atau kaedah yang dilaksanakan tidak memenuhi keperluan, UnsupportedOperationException akan dibuang.

Penukaran jenis data tidak disokong

Di Java, penukaran antara beberapa jenis data tidak disokong, seperti menukar pembolehubah jenis Rentetan kepada pembolehubah jenis Integer. UnsupportedOperationException dilemparkan apabila penukaran jenis data yang tidak disokong dicuba.

    Sebagai contoh, kita mentakrifkan pembolehubah jenis String:
  1. String s = "123";
  2. Jika kita cuba menukarnya kepada pembolehubah jenis Integer:
Integer i = Integer.valueOf(s); //抛出UnsupportedOperationException异常

UnsupportedOperationException akan dilemparkan.

Pengecualian pengubahsuaian serentak

Di Java, jika berbilang benang mengubah suai objek koleksi pada masa yang sama, ia mungkin menyebabkan pengecualian pengubahsuaian serentak. Untuk mengelakkan pengecualian ini, Java menyediakan beberapa kelas koleksi disegerakkan, seperti Vektor dan Hashtable. Jika kami cuba melakukan operasi pengubahsuaian yang tidak disokong pada kelas koleksi yang disegerakkan ini, UnsupportedOperationException akan dilemparkan.

    Sebagai contoh, jika kita mencipta objek koleksi Vektor yang disegerakkan:
  1. Vector<Integer> vector = new Vector<>();
    vector.add(1);
    vector.add(2);
    vector.add(3);
  2. Kemudian, jika kita cuba melakukan operasi pengubahsuaian yang tidak disokong padanya:
for (Integer i : vector) {
    vector.remove(i); //抛出UnsupportedOperationException异常
}

UnsupportedOperationException akan dilemparkan. . Untuk mengelakkan berlakunya pengecualian ini, kita perlu membiasakan diri dengan jenis data dan kelas pengumpulan di Jawa, mengikut spesifikasi bahasa Java, dan menggunakan jenis data dan kelas pengumpulan di Jawa dengan betul.

Atas ialah kandungan terperinci Apakah punca biasa UnsupportedOperationException di 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