2013-08-22 11 views
108

, ben böyle 've' operatörü (&) sahip bir sınıf ve/veya daha arayüzleri genişletmek için (bu durumda T olan) tip argüman kısıtlayabilirsiniz bulundu:Java jeneriklerinde '&' ve ',' arasındaki fark nedir? jenerik hakkında Java resmi öğretici okurken

<T extends MyClass & Serializable> 

&'u , ile değiştirdim (yanlışlıkla ve hala küçük bir uyarı ile çalışır).

<T extends MyClass & Serializable> 
<T extends MyClass , Serializable> // here is with comma 

ve örnek yöntemi:

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, OP'in bir klavye ve kullandığınız klavyeyi kullandığını varsayıyorsunuz. – emory

+3

@emory Bunun yanlış olduğunu düşünüyorum - hata parmaklarında değil, beyninde. Benzer şekilde, bir Java kaynak dosyasında 'import' yerine 'include' kullanmayı denediniz. 'Dahil et' kelimesini yanlış yazdınız, çünkü beyniniz size çeşitli nedenlerden dolayı yanlış bir şey yazmanızı söyledi. –

+2

@Nicholas Pickering, doğru! Benim için klavyeden dolayı bir mistip değildi, ama beyin yüzünden. Bir sınıfın uyguladığı arayüzleri yazdığınızda, onları virgülle ayırırsınız. –

cevap

166
<T extends MyClass & Serializable> 

Bu tek tip parametre TMyClass uzanan ve gerektiğini ileri sürer Benim soru

, bu ikisi arasında herhangi bir fark yoktur Serializable olmalıdır. (- bu uyarı ne hakkında olduğunu muhtemelen java.io.Serializable gizler) Bu

<T extends MyClass , Serializable> 

iki tip parametrelerini bildirir, bir T (MyClass uzatmak gereken) ve Serializable denilen bir çağrıda bulundu.

İlgili konular