如何将 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
我在下面有一个函数,它接受一个字符串并将其转换为一个 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