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

  • B3ASTTY™

    B3ASTTY™

    27 Mayıs 2013
  • Charles Renaud

    Charles Rena

    10 Kasım 2007
  • SamsTech

    SamsTech

    4 NİSAN 2014