SORU
7 Temmuz 2009, Salı


Genel bir sınıf başlatmasını Java

Java jenerik bir şekilde aşağıda olduğunu biliyorum .Net.

Foo<T> ve ben Foo T parametresi olmayan bir oluşturucu kullanarak oluşturmak için gereken genel bir Dersim var. Nasıl bir Java kısıtlamaya çalışabilir?

CEVAP
7 Temmuz 2009, Salı


Bir seçenek Bar.class (veya ilgilendiğiniz ne olursa olsun - ** 5 uygun başvuru belirtme herhangi bir şekilde) geçmek ve bir alan olarak bu değeri korumak için

public class Test
{   
    public static void main(String [] args)
        throws Exception // Just for simplicity!
    {
        Generic<Bar> x = new Generic<Bar>(Bar.class);
        Bar y = x.buildOne();
    }
}

public class Generic<T>
{
    private Class<T> clazz;

    public Generic(Class<T> clazz)
    {
        this.clazz = clazz;
    }

    public T buildOne() throws InstantiationException,
        IllegalAccessException
    {
        return clazz.newInstance();
    }
}

public class Bar
{
    public Bar()
    {
        System.out.println("Constructing");
    }
}

Başka bir seçenek, bir "arayüzü ve genel sınıf. yapıcı bir fabrika geçirmek" fabrikası var. Daha esnek ve yansıma özel durumlar hakkında endişelenmenize gerek yok.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MultiPlayStationMan

    MultiPlaySta

    17 Aralık 2009
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • The Warp Zone

    The Warp Zon

    24 AĞUSTOS 2007