【发布时间】:2013-08-05 20:37:50
【问题描述】:
简单地说,我有以下代码,有没有更好的方法来做到这一点?
另外,我不能修改任何配方类。
public static ShapelessRecursiveRecipe convertRecipe(Object o)
{
//might be a better way to do this
if(o instanceof ShapedRecipes)
return new ShapelessRecursiveRecipe((ShapedRecipes)o);
else if(o instanceof ShapelessRecipes)
return new ShapelessRecursiveRecipe((ShapelessRecipes)o);
else if(o instanceof ShapedOreRecipe)
return new ShapelessRecursiveRecipe((ShapedOreRecipe)o);
else if(o instanceof ShapelessOreRecipe)
return new ShapelessRecursiveRecipe((ShapelessOreRecipe)o);
else
return null;
}
【问题讨论】:
-
你不能有一个基类来派生所有这些子类型的食谱吗?
-
确实如此,但这不取决于我,因为这些类不是我创建的,也不是我维护的。
-
所以
ShapelessRecursiveRecipe中的每种类型都有一个构造函数? -
@assylias 没错。
标签: java function casting base-class