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

  • Angry Paintballer

    Angry Paintb

    8 Ocak 2012
  • Cristina Landa

    Cristina Lan

    28 Ocak 2010
  • ThePhestor

    ThePhestor

    22 Mart 2011