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ş:
Nasıl iki genel türleri ile bir arabir...
Nasıl bir sınıf, genel bir tür edebi a...
Java iç sınıf ve statik iç içe sınıf...
Arayüz vs Soyut Sınıf (genel OO)...
Java sınıf yolu içinde birden fazla ka...