Konuyu görüntüle
IUCODERS FORUM > Programlama > JAVA > Template sınıflar ve metodlar hakkında soru
Yazar
hatke


avatar
KIRCALI
Kayıt: 14.01.2006
02.11.2008-17:10 #52171
Merhabalar, danısmak istediğim bir konu var.

Templateler konusunda bir sıkıntı yasıyorum. Sorum soyle:

Bir template A sınıfım olsun. yani A<T> tipinde bir sınıf.

class A<T> {
private T value;

public void setValue(T val);
public T getValue();
}

Ve bir fonksiyonum olsun. Bu fonksiyon tipi belli olmayan A sınıfı
turunden objeler listesi dondursun.

//...

List<A <?>> getContent();

//..

Ben, geri donus degeri ile alınan liste icinde donerek her bir
elemanın ilgili set fonksiyonunu cagırmak istiyorum. Fakat, liste
içindeki objeler <?> ile belirtidiği için A sınıfının setValue
fonksiyonuna arguman veremiyorum. Cunku aslında T tipi henuz belli
degil.


List<A<?>> content = obj.getContent();
for (A<?> element: content) {
element.setValue(T); //T olarak ne verebilirim?
}

Nasıl bir teknikle set fonksiyonunu calıstırabilirim. Arguman olarak
verdiğim degerler T nin değeri belli olmadığı için derleyici kızıyor.


NOT: Kullandıgım bu sınıf ve fonksiyonlar kutuphane elemanları. İmzalarını degistirmem gerekiyor. Bu sekilde kullanmam lazım. <?> yani "unknown" degerini kullanmam gerekiyor.


Değerli fikirlerinizi, onerilerinizi bekliyorum.

Şimdiden teşekkürler..






hozlem
Yazar
hatke


avatar
KIRCALI
Kayıt: 14.01.2006
02.11.2008-17:12 #52172
NOT kısmında "İmzalarını degistirmem" demişim degistirmemem gerekiyor olacak laughing





hozlem
Yazar
bora


avatar
Istanbul
Kayıt: 14.01.2006
03.11.2008-13:47 #52231
hatke yazdi
 


List<A<?>> content = obj.getContent();
for (A<?> element: content) {
element.setValue(T); //T olarak ne verebilirim?
}

Nasıl bir teknikle set fonksiyonunu calıstırabilirim. Arguman olarak
verdiğim degerler T nin değeri belli olmadığı için derleyici kızıyor.


Atıyorum listeden sürekli String geliyor olsun. Bu list parameterized olmasa bile biz içerisinden bize String geleceğini biliyoruz. Gelmezse bişeyler yolunda gitmiyor demektir diyebiliriz sanırım.

ilgili iterasyonda eline gelen element i A<String> şeklinde bir değişkene cast ederek bu referans üzerinden setValue metodunu yine bir "String" referansını parametre gecirerek çaliştirabilirdin. Set ettikce de yine yeni bir List olusturup ona add edersen elinde sanırım istedigin şekilde bir list olmus olacaktı.







@yelloware












Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb