我和Class<?>
一起上课 field 。我有一个方法,必须在 jackson 的帮助下将字符串转换为对象。
private Class<?> myType = ...;
private String jsonRepresentationOfObject = ....;
ObjectMapper mapper = new ObjectMapper();
public <T> T get() {
return mapper.readValue(jsonRepresentationOfObject, myType);
}
有没有可能投myType
至T
?或者因为类型删除而不可能?
最佳答案
如果您绝对确定 readValue
的结果将为 T
类型,您可以执行以下操作:
public <T> T get() {
return (T)mapper.readValue(jsonRepresentationOfObject, myType);
}
对于未经检查的强制转换,您必须@SuppressWarnings
。
在其他语言中(例如可以与 Java 互操作的 Kotlin),您可以使用 reified generics
但由于类型删除,它在 Java 中不存在。
如果readValue
的结果不是T
那么你会得到一个ClassCastException
所以明智地使用它.
关于java - 如何将 Class<?> 转换为 Class<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45358322/