我想创建静态方法并在该方法上使用jackson将json转换为某个对象。我不明白如何在我的静态方法中使用class作为参数。
这里是我的代码:
static Object stringToObject(String jsonString, Class someClass) {
ObjectMapper mapper = new ObjectMapper();
SomeClass Object = mapper.readValue(jsonString, someClass.class);
//handling some exception
return Object;
}
该代码会出错......有人可以给我建议如何实现这一点谢谢
答案 0 :(得分:3)
由于您始终希望保持类型安全,因此最佳解决方案是使用generic method这是一种带有类型变量的方法。
在您的情况下ObjectMapper::readValue
已经是一种通用方法,因此您需要使用正确的声明语法:
static <T> T stringToObject(String jsonString, Class<T> clazz) {
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(jsonString, clazz);
}
static void test() {
Foo foo = stringToObject("...", Foo.class);
}
通过这种方式,Java type inference可以使其工作,您无需指定任何内容。