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

  • Klemens Torggler

    Klemens Torg

    11 Mart 2008
  • ShayLoss

    ShayLoss

    5 Kasım 2009
  • TheMasterOfHell100

    TheMasterOfH

    13 AĞUSTOS 2011