SORU
8 EKİM 2008, ÇARŞAMBA


Nasıl genel bir tür sınıf belirlemek için?

Genel bir sınıf yaratıyorum ve yöntemlerden biri olarak şu anda genel türü Sınıfı bilmem gerekiyor. Nedeni yöntemin diyorum biri bir argüman olarak bekliyor.

Örnek:

public class MyGenericClass<T> {
  public void doSomething() {
    // Snip...
    // Call to a 3rd party lib
    T bean = (T)someObject.create(T.class);
    // Snip...
  }
}

Çalışmıyor ve aşağıdaki hata sonucu yukarıda açıkça örnek: Geçersiz bir sınıf türü parametre T. için değişmez

Benim soru şudur: biri bunun için iyi bir alternatif ya da geçici bir çözüm biliyor mu?

CEVAP
8 EKİM 2008, ÇARŞAMBA


Genel Bilgiler zamanında silinir, kurtarılamaz. hala aynı sorunlar : Geçici bir çözüm statik bir yöntemi parametre olarak sınıf T geçmek için :

public class MyGenericClass<T> {

    private final Class<T> clazz;

    public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {
        return new MyGenericClass<U>(clazz);
    }

    protected MyGenericClass(Class<T> clazz) {
        this.clazz = clazz;
    }

    public void doSomething() {
        T instance = clazz.newInstance();
    }
}

Çirkin değil, ama işe yarıyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • celebrateubuntu

    celebrateubu

    23 Mayıs 2011
  • SoundHound

    SoundHound

    8 Mart 2006
  • spederson7

    spederson7

    17 Temmuz 2006