Effective java(潘爱民译) 的第二章中有一句话:“静态工厂方法的第三个好处是,与构造函数不同,它们可以返回一个原返回类型的子类型的对象”说的什么意思?比如有类A,有个静态方法method,这句话是说method能够返回A的子类的对象?
如果是这样 怎么实现?
英文版是:“A third advantage of static factory methods is that,unlike constructors,they can return an object of any subtype of their return type.”
------解决方案--------------------
构造函数只能返回“当前”类的对象,而静态工厂方法可以返回“当前类”子类的对象
------解决方案--------------------
public class Factory{
public static Sample creator(int which){
//getClass 产生Sample 一般可使用动态类装载装入类。
if (which==1)
return new SampleA();
else if (which==2)
return new SampleB();
}
}
其中SampleA和SampleB是Sample的子类。