java - 有没有办法通过使用字符串转换为类型
问题描述
我有一个字符串告诉我要将对象投射到什么位置,有没有办法投射到该对象?
这是一些定义我想做的伪代码
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
...
}
}
尽管有几个人提到我想这样做的方式可能是错误的,包括我标记为正确的答案(即使我问错了问题,它也回答了我的问题),我真正理解这一点的原因是因为回应那被删除了。
解决方案
替代方法(虽然我不知道这是否被认为是不好的做法):
public TypeToCastTo Cast(T object, String TypeToCastTo) {
switch (TypeToCastTo) {
case "foo":
return new Foo(object);
case "otherType":
return new OtherType(object);
...
}
}
不过,对于您想要处理的不同类型,您将需要具有相应参数(重载)的特定构造函数。在这些构造函数中,您可以控制从一种类型到另一种类型的精确“翻译”。
推荐阅读
- r - 使用官员将外部图像插入 PowerPoint 而不更改图像尺寸
- r - 如何使向量(另存为字符串)再次成为向量?
- python - 使用聚合计算来获得两个数据帧之间的均值和标准差
- javascript - HTML 形式的播放按钮不播放最新的音频文件,播放的是旧版本,该版本已被覆盖
- python - 在 Python 中使用相同的列名保存 XML 中的特定值
- r - 在R中的生存曲线中添加中值和上标字符
- angular - Angular i18n 不适用于 ng serve 命令
- linux - 如何找出一个屏幕命令在 Linux 上运行了多长时间?
- java - JavaFX创建windows任务栏程序
- javascript - 如何在 TypeScript 中使用 this.props.action 函数?