类作为静态方法的参数 - Java

时间:2016-06-15 01:02:04

标签: java android jackson

我想创建静态方法并在该方法上使用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;
}

该代码会出错......有人可以给我建议如何实现这一点谢谢

1 个答案:

答案 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可以使其工作,您无需指定任何内容。