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

03-05-18 ejber
    

我定义了一个接口叫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();就正确的呢?

谢谢

    

wys1978
2003-05-18 22:15

如果你传入的type既不是old也不是baby

那么你这个方法就不会返回任何man了.

你可以在最后加上

else{

return null;

}

ejber
2003-05-18 22:37

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

mochow
2003-05-22 18:53

要不你在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的缘故吧。