SORU
3 HAZİRAN 2011, Cuma


Liste, Liste< arasındaki fark;?&; gt Listesi<T> Liste<E> ve Listesi&; Nesne> lt;

NeList, List<?>, List<T>, List<E>, ve List<Object> arasındaki farklar?

Şimdi körü körüne bu soruyu sormak istemiyorum, lütfen bu konuyu kapatın. Bana ilk Bankası kodu tanıştırayım:

private static List<String> names = new ArrayList<String>();
static {
    names.add("Tom");
    names.add("Peter");
    names.add("Michael");
    names.add("Johnson");
    names.add("Vlissides");
}

public static void test(List<String> set){
    System.out.println(set);
}
public static void main(String args[]){
    test(names);
}

Anlıyorum:

1.List: çiğ bir tür, bu nedenle typesafe değil. Tek döküm kötü olduğunda, bir çalışma zamanı hatası oluşturur. Bir cast kötü olduğunda, bir derleme zamanı hatası istiyoruz. Tavsiye kullanmak için değil.

2.List<?>: sınırsız bir güçtür. Ama tabii bunun için değil mi? Eğer test yöntemi değiştirirsem

public static void test(List<?> set){
    System.out.println(set);
}

hala iyi çalışır.Eğer bu kullanımını açıklayabilir eğer, minnettar olacağım.

EDİT: Eğer bunu yaparsam:

public static void test(List<?> set){
    set.add(new Long(2)); //--> Error
    set.add("2");    //--> Error
    System.out.println(set);
}

ama eğer değiştirirsem 21* *bunun için:

public static void test(List<String> set){
    set.add(new Long(2)); //--> Error
    set.add("2");    //--> Work
    System.out.println(set);
}

3.List<T>:

public static void test(List<T> set){   //T cannot be resolved
    System.out.println(set);
}

Bu sözdizimi anlamıyorum sanırım. Böyle bir şey gördüm, ve o inşaat:

public <T> T[] toArray(T[] a){
    return a;   
}

Lütfen bunu açıklayın bana lütfen? Bazen<T> <E> <U>, <T,E> görüyorum. Hepsi aynı mı yoksa farklı bir şey temsil ediyorlar?

4.List<Object>

public static void test(List<Object> set){
    System.out.println(set);
}

Sonra kodu aşağıda 32 ** hata aldım. Kafam karıştı. String Object alt sanıyordum.

public static void main(String args[]){
    test(names); 
}

DÜZENLEME:Eğer bunu denersem

test((List<Object>)names);

sonra Cannot cast from List<String> to List<Object> aldım

CEVAP
3 HAZİRAN 2011, Cuma


1) Doğru

2) "okuma öğe türü umurunda değil." listesinde tek olarak düşünebilirsiniz Örneğin listenin uzunluğunu döndüren bir yöntem olarak kullanılabilir.

3) T, E ve U aynı, ama insanlar anahtar türü için, Eleman için E değer V ve K örneğin T kullanma eğiliminde. Derler yöntemi belirli bir türde bir dizi çeker, aynı türde bir dizi döndürür diyor.

4) portakal ve elma karıştıramazsın. Eğer nesne listeleri beklediği bir yöntem için bir dize liste geçersen Dize listenize bir Nesne eklemek mümkün olacaktır. (Ve tüm nesnelerin dizeleri)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • Motor Trend Channel

    Motor Trend

    11 Mart 2006
  • PCDIY

    PCDIY

    16 AĞUSTOS 2013