0%

Java 泛型 工厂模式

使用泛型的类中,要实例化一个泛型类的对象时,不能使用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());