Melihat melalui Java Collections Framework, saya perhatikan beberapa antarmuka memiliki komentar (optional operation). Metode-metode ini memungkinkan kelas implementasi melalui UnsupportedOperationExceptionjika mereka tidak ingin mengimplementasikan metode itu.
Contoh dari ini adalah addAllmetode dalam Set Interface.
Sekarang, seperti yang dinyatakan dalam rangkaian pertanyaan ini, antarmuka adalah kontrak yang menentukan untuk apa yang bisa digunakan oleh penggunaan.
Antarmuka penting karena mereka memisahkan apa yang dilakukan kelas dari bagaimana melakukannya. Kontrak yang mendefinisikan apa yang dapat diharapkan klien membuat pengembang bebas menerapkannya dengan cara apa pun yang mereka pilih, selama mereka menegakkan kontrak.
dan
Antarmuka adalah deskripsi tindakan yang dapat dilakukan suatu objek ... misalnya ketika Anda membalik sakelar lampu, lampu menyala, Anda tidak peduli bagaimana, hanya saja fungsinya. Dalam Pemrograman Berorientasi Objek, Interface adalah deskripsi dari semua fungsi yang harus dimiliki suatu objek agar menjadi "X".
dan
Saya pikir pendekatan berbasis antarmuka secara signifikan lebih baik. Anda kemudian dapat mengejek dependensi Anda dengan baik, dan semuanya pada dasarnya kurang erat.
Antarmuka + Ekstensi (mixin) vs Kelas Dasar
Mengingat bahwa tujuan dari antarmuka adalah untuk menentukan kontrak dan membuat dependensi Anda digabungkan secara longgar, tidakkah ada beberapa metode yang melemparkan UnsupportedOperationExceptionsemacam kekalahan tujuannya? Itu berarti saya tidak bisa lagi menggunakan Setdan hanya menggunakan addAll. Sebaliknya, saya harus tahu implementasi apa yang Setsaya lewati, jadi saya bisa tahu apakah saya bisa menggunakan addAllatau tidak. Bagi saya itu sepertinya tidak berharga.
Jadi apa gunanya UnsupportedOperationException? Apakah ini hanya untuk mengganti kode lama, dan mereka perlu membersihkan antarmuka mereka? Atau apakah itu memiliki tujuan yang lebih masuk akal yang saya lewatkan?
src.zipia bekerja dengan baik. Ini membantu untuk mengetahui persis kode apa yang JRE jalankan kadang-kadang dan tidak tunduk pada JavaDoc yang bisa sedikit bertele-tele.
addAlldiHashSet. Itu mengacu pada implementasi default diAbstractCollectionmana pasti tidak membuangUnsupportedOperationException.