Karena banyak hal mengimplementasikan antarmuka Iterable atau memperluasnya sebagai sub antarmuka.
Kelas implementasi adalah:
- java.util
- AbstractCollection
- AbstractList
- Abstractueue
- AbstractSequentialList
- AbstractSet
- ...
- bersamaan
- ArrayBlockingQueue
- ConcurrentLinkedDeque
- ...
- java.beancontext
- BeanContextServicesSupport
- Dukungan BeanContext
- ...
- java.sql
- BatchUpdateException
- DataTruncation
- ...
- javax.management
- javax.print.attribute.standard
- ...
Ini daftar yang sangat besar. Dan itu menyentuh semua jenis paket di luar sana.
Selanjutnya, Anda ingin meminimalkan dependensi paket melingkar . Jika kelas dalam paket A tergantung pada kelas dalam paket B yang tergantung pada kelas dalam paket A, Anda memiliki ketergantungan melingkar. Mereka tidak selalu buruk bahwa mereka ada - tetapi mereka mengarah pada dependensi melingkar lainnya dan itu bisa menjadi hal yang buruk. Ini tidak buruk dengan sendirinya, tetapi ini adalah bau desain yang menunjukkan bahwa sambungan antara dua kelas atau paket terlalu ketat. Ini adalah awal dari akumulasi utang teknis.
Solusi untuk ini adalah dengan mengatakan "ya, antarmuka Iterable adalah sesuatu yang bergantung pada berbagai kelas dan paket di seluruh keseluruhan struktur java dan javax. Ini harus berada di pustaka bahasa yang paling dasar - java .lang. "
Dan di situlah Anda akan menemukannya.
Bacaan terkait: