使用泛型的类中,要实例化一个泛型类的对象时,不能使用new,可以使用class.newInstance(),但是该类刚好没有默认无参的构造方法,也会出错。所以最好的方法是用工厂模式。 IFactory.java:
/**
* 工厂接口,包含create方法
* @author fhp
*
* @param
*/
public interface IFactory {
T create();
}
Foo.java:
/**
* 成员带有泛型的类
* @author fhp
*
* @param
*/
public class Foo {
private T x;
//构造方法传入一个实现IFactory的工厂
public > Foo(F factory)
{
x=factory.create();
}
public T get()
{
return x;
}
}
StringFactory.java:
/**
* 工厂实现类
* @author fhp
*
*/
public class StringFactory implements IFactory {
@Override
public String create() {
// TODO Auto-generated method stub
return "String Factory";
}
}
使用:
Foo foo=new Foo(new StringFactory());
System.out.println(foo.get());