我有一个字符串,告诉我要将对象强制转换为什么,是否有方法强制转换为该对象?
下面是一些伪代码,它们定义了我想做什么
public TypeToCastTo Cast(T object,String TypeToCastTo) {
switch (TypeToCastTo) {
case "foo":
return (foo)T;
case "otherType":
return (otherType)T;
...
}
}
编辑
我想创建一个游戏,在该游戏中,我可以点击按钮购买商品,例如从worldObject继承的剑或盔甲。我认为,因为我可能要返回武器或装甲类(都从worldObject继承),所以返回一个worldObject然后向下转换为正确的类(基于它的名称(字符串))是很有意义的。
编辑2: 如评论中所述,这是一个XY问题。我最初试图创建一个将返回向下转换类型的函数,但实际上却没有意义,因为在其他地方使用它的情况下,我将需要一个switch语句来确定该对象如何处理(在这一点上,我可以投射),而不是拥有
public TypeToCastTo Cast(T object,String TypeToCastTo) {
switch (TypeToCastTo) {
case "foo":
return (foo)T;
...
}
}
使用我的函数强制转换WorldObject,我可以拥有
Method DoingSomethingWithWorldObject(WorldObject T) {
switch(T.typeToCastTo) {
case "foo":
foo temp = (foo)T;
// code using temp
case "other":
other temp = (other)T;
// code using temp
...
}
}
尽管有几个人提到这可能是我考虑的方式错误,包括我已将答案标记为正确的答案(即使我提出了错误的问题,也回答了我的问题),我实际上理解这的原因是删除的回复中。