如何将 class 对象作为 Java 中的变量传递

How to pass class object as a variable in Java

我在下面有一个函数,它接受一个字符串并将其转换为一个 JSON 对象,使用 java 中的 Jackson Api。

public JobConfig fromJson(String config)  {
        JobConfig lib = null;
        try {
            lib = mapper.readValue(config, JobConfig.class);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return lib;
    }

JobConfig.class 是我的 JAVA JSON 结构的 Pojo。

我调用这个函数如下 -

JobConfig jobConfig = utils.fromJson(config);

问题是我必须为另一个 JSON 编写另一个函数,所以我希望它足够动态,所以当我调用这个函数时,我也可以发送 JobConfig.class class 并且它应该 return 相应地。

在scala中我会做这样的事情-

def fromJson[T : Manifest](s: String): T = Serialization.read[T](s)

不确定如何在 Java 中执行此操作。接受新的学习。

试试这个,使用 Java 泛型:

  public <T> T fromJson(String config, Class<T> clazz) {
    T lib = null;
    try {
      lib = mapper.readValue(config, clazz);
    } catch (JsonProcessingException e) {
      e.printStackTrace();
    }
    return lib;
  }

通话:

JobConfig config = fromJson("json here", JobConfig.class)

在 java 中,您也可以使用泛型。

您的代码如下:

public class Main<T> {
    public T fromJson(String config)  {
        T lib = null;
        try {
            lib = mapper.readValue(config, Class<T>);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return lib;
    }
}

您可以像使用 Scala 泛型一样使用 Java Generic。它允许你用一个单一的方法声明,一组相关的方法。

public T fromJson(String config, Class clazz)

然后你可以调用这个函数,你的第二个参数是 .Class Object