java - 对象映射器 | 动态映射
问题描述
我在我的项目中遇到了一个问题:我有 3 个类(B、C、D),它们都扩展了另一个类(A),我想要一个将字符串映射到这 3 个类之一的方法。
我想出了以下解决方案:
public MySuperclass mapDynamicallyToObject(String stringObject, Object theClass) {
return new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true)
.readerFor(theClass.getClass())
.readValue(stringObject);
}
但它在运行时不起作用。
通过阅读 Oracle 的文档,我认为通过使用对象的方法.getClass(),JVM 将能够在运行时确定对象的真实性质并将字符串映射到它。
我错在哪里?你遇到过类似的问题吗?你是怎么处理的?
顺便说一句,我只是在学习泛型,我想在这里使用它而不是使用“Object theClass”,但它没有将字母T识别为泛型。
Ps 如果有任何帮助,我正在使用 Spring Boot。
提前感谢大家的帮助!
解决方案
已经有一段时间了,但这里是解决方案:
public Object mapDynamicallyToObject(String stringObject, Class clazz) {
return new ObjectMapper()
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true)
.readerFor(clazz)
.readValue(stringObject);
}
当调用该方法时,它需要强制转换
MyClass myClass = (Myclass) this.mapDynamicallyToObject(theString, MyClass.class);
推荐阅读
- html - 为数组对象管理我的 *ngFor 时出现问题
- scala - 播放 Json 验证在日期字段上失败并出现错误:[error.expected.date.isoformat]
- react-native - 调用 SearchBox 组件进入事件并在子组件上填充数据
- angular - ngx剪贴板订阅copyResponse$不起作用
- mysql - 触发 MYSQL 时间戳
- mysql - MySQL在匹配其他表或其中不存在时查找ID
- python - Python虚拟环境不默认python包
- powerbi - Power BI 矩阵行级聚合
- reactjs - 即使刚刚创建它,create-react-app 运行问题
- android - 在 android 中运行媒体 x 秒