关于我写的工厂模式的奇怪问题??

我定义了一个接口叫man里面有个echo()方法
然后定义了两个类都实现了man接口,一个类是oldman,一个类是baby,也都实现了echo方法。
然后我写了一个manfactory类,写了一个creator方法,如下:
public static man creator(String type)
{
if(type.equals("old"))
{
return new oldman();
}
else if(type.equals("baby"))
{
return new baby();
}
}
但是一编译就报告说需要返回类型是man,我写的返回类型就是man啊,为什么这样错误?如果没有if语句,比如直接return new oldman();就正确的呢?
谢谢

如果你传入的type既不是old也不是baby
那么你这个方法就不会返回任何man了.

你可以在最后加上
else{
return null;
}

这里写的是老版本,我最后加了的,还是不行

要不你在return 的时候造型一下


public static man creator(String type)
{
man newman = null;
if(type.equals("old"))
{
newman = new oldman();
}
else if(type.equals(
"baby"))
{
newman = new baby();
}
return newman;
}

要是还是不行,可能因为你的方法是static的缘故吧。