Saat membaca tutorial resmi Java tentang generik, saya menemukan bahwa Anda dapat membatasi argumen type (dalam hal ini adalah T
) untuk memperluas kelas dan / atau lebih banyak antarmuka dengan operator 'dan' ( &
) seperti ini:
<T extends MyClass & Serializable>
Saya mengganti &
dengan ,
(secara tidak sengaja dan masih berfungsi, dengan peringatan kecil).
Pertanyaan saya adalah, apakah ada perbedaan antara keduanya:
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
Dan contoh metode:
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}
5
@Doorknob Anda mengasumsikan OP menggunakan keyboard dan keyboard yang sama dengan yang Anda gunakan.
—
emory
@emory Saya pikir bahkan itu salah arah - kesalahannya bukan di jarinya tapi di otaknya. Sama seperti jika Anda mencoba menggunakan 'sertakan' alih-alih 'impor' dalam file sumber Java. Anda salah mengetik 'termasuk', karena otak Anda menyuruh Anda mengetik hal yang salah, yang mungkin terjadi karena berbagai alasan.
—
Nick Pickering
@Nicholas Pickering, benar! Bagi saya, itu bukan salah ketik karena keyboardnya, tapi karena otaknya. Saat Anda menulis antarmuka mana yang diimplementasikan kelas, Anda memisahkannya dengan koma.
—
Alin Ciocan