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

  • Android Central

    Android Cent

    13 Kasım 2008
  • Damian Winter

    Damian Winte

    27 ŞUBAT 2007
  • EEVblog

    EEVblog

    4 NİSAN 2009