Di bagian generik Java Efektif Bloch (yang dengan mudahnya merupakan bab "gratis" yang tersedia untuk semua: http://java.sun.com/docs/books/effective/generics.pdf ), ia mengatakan:
Jika parameter tipe hanya muncul sekali dalam deklarasi metode, gantilah dengan wildcard.
(Lihat halaman 31-33 dari pdf itu)
Tanda tangan yang dimaksud adalah:
public static void swap(List<?> list, int i, int j)
vs.
public static void swap(List<E> list, int i, int j)
Dan kemudian mulai menggunakan fungsi "pembantu" privat statis dengan parameter tipe aktual untuk melakukan pekerjaan. Tanda tangan fungsi pembantu sama persis dengan opsi kedua.
Mengapa wildcard lebih disukai, karena Anda TIDAK perlu menggunakan wildcard untuk menyelesaikan pekerjaan? Saya memahami bahwa dalam hal ini karena dia memodifikasi Daftar dan Anda tidak dapat menambahkan ke koleksi dengan wildcard yang tidak terikat, jadi mengapa menggunakannya sama sekali?