2012-04-24 33 views
8

. Bu neden çalışmıyor? Aşağıdaki hatayı alıyorum :, JDK7: java yöntemi ben bu kodu var

S.S. Dürüst bir şekilde 30-40 dakika aramayı denedim.

Güncelleme: yöntemi olarak bildirirse çalışır. ama hala orijinal deklarasyonun neden derlenmediğini anlamıyorum. bunun nesi var? genel yönteme benzer getScrapper() ile

+0

Yalnızca ControlAltDel

+0

'a ayarladıysanız, imo çalışmamasını önerdiğiniz şekilde ne olur? ama başka bir şey denedim ve işe yaradı. Ben –

+0

sorusunu güncelledim Evet yoruldum. Ben sadece Scrapper (parametrik olmayan) için değişiklik anlamına geliyordu ama bir sınıf argüman kullanarak çalışmak için var ve bu sizin amaçlarınıza uygun – ControlAltDel

cevap

10

, arayan yönteminin yöntemine gerçek tip argüman (bu durumda T) ne belirler. Arayan Scrapper'un herhangi bir alt türünü T olarak alabilir ve yönteminiz (her zaman MyScrapper.class döndürür) doğru sınıfı döndürmeyecektir. Class<? extends Scrapper> dönmek için yöntem değiştirme

Class<MyOtherScrapper> c = foo.<MyOtherScrapper>getScrapper(); 

vardır ... artık genel bir yöntem yapar: Yöntemin imzası Verilen

, bu yöntemin arayanın bunu yapabilmek için beklediğiniz Arayan için ayarlanmış hiçbir parametre yok. Bunun yerine, yöntem yöntemin için bazı bilinmeyen alt türü Scrapper10 için sınıf nesnesini döndürdüğünü ve MyScrapper.class bunun için faturaya uygun olduğunu söylüyor.

+0

sağ olsun Teşekkür ederim :) Ben bu soru sorulduğunda dün yorgun ve aptal gibi görünüyor: D gerekir kendim :) –