Arkadaslar 1 sorum daha var.List< ? extends Animal> a=new ArrayList<dog>(); a.add(new Dog()); nicin burada hata veriyor?Biliyorumki <? extends Animal> ya Animal-in kendisi yada onu extends eden siniflar olmali.ancaq add metodu hata veriyor icine 1 eleman yazdigimda.sorun nededir burada?simdiden tesekkurler.

soruldu: 28 May '12, 01:10

hale's gravatar image

hale
127343642
cevap kabul oranı: 0%

değiştirildi: 28 May '12, 07:15

CemIkta's gravatar image

CemIkta ♦
19.9k29125190


List< ? extends Animal> direk olarak method içinde Animal extend ettiği sınıfları ekleyemezsin o zaman listenin yapısını bozarsın (type safe olmaz). Nasıl mesela eklediğini düşünelim.

Illegal kullanım.

List< ? extends Animal> a=new ArrayList<dog>();

//her turlu hayvani eklerim.

a.add(new Dog());

a.add(new Cat())

a.add.....

Şimdi bu almaya çalıştığında exception alacaksın. Ne olacak

Dog one = a.get(1); // bu cat idi.


Nasıl kullanabilirsin. Method yazarak bunu kullanabilirsin.

public static void main(String[] args) {
    List<Dog> test = new ArrayList<Dog>();
    addList(test);
}

private static void addList(List<? extends Animal> list){
}

Ek olarak illede bu şekilde kullanmak istiyorum dersen extend değilde tum super leri ekle diyebilirsin.

public static void main(String[] args) {

    List<? super Animal> list = new ArrayList<Animal>();
    list.add(new Dog());
    list.add(new Cat());

}

Ve not olarak

Soru başlıklarını daha açıklayıcı yazarsan, daha güzel olur bu başlık çok genel.

permanent link

cevaplandı: 28 May '12, 04:03

gklp's gravatar image

gklp
789317
cevap kabul oranı: 17%

değiştirildi: 28 May '12, 04:06

Minnetdarim cox sagolun.

(28 May '12, 04:12) hale hale's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×1,077

Soruldu: 28 May '12, 01:10

Görüntüleme: 504 kez

Son güncelleme: 28 May '12, 12:59

powered by BitNami OSQA