【发布时间】:2020-03-25 17:38:24
【问题描述】:
我在我的项目中遇到了一个问题:我有 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 识别为泛型.
附:如果有任何帮助,我正在使用 Spring Boot。
提前感谢大家的帮助!
【问题讨论】:
-
你能说明你是如何调用这个方法的吗?我宁愿期待像
<T> T parse(String input, Class<T> klass) { return objectMapper.readValue(input, klass); }这样的东西。
标签: java spring generics objectmapper