繁体   English   中英

在Java中将类作为参数传递

[英]Passing a class as a parameter in Java

所以我正在使用com.fasterxml.jackson readValue方法,该方法工作得很好。 它接收一个json字符串和一个POJO,该POJO已填充并保存到obj:

Object obj = mapper.readValue(myJsonString, MyPojo.class);

由于某种原因,如果我创建一个执行相同操作的util类,则在使用readValue()方法时会出现IO异常。 当我打印c时,我得到:“ class models.UserProfile”。 当我打印出c.getClass()时,我得到“ class java.lang.class”。 我上课的方式有问题吗?

    public static Object deserialize(String s, Class c) throws JsonParseException, JsonMappingException, IOException {

    Object obj = mapper.readValue(s, c);
    return obj;
}

您可以使用通用类型:

MyPojo obj = mapper.readValue(myJsonString, MyPojo.class);

public static <T> T deserialize(String s, Class<T> c)
        throws JsonParseException, JsonMappingException, IOException {
    return mapper.readValue(s, c);
}

MyPojo obj = Util.deserialize(myJsonString, MyPojo.class);

但是,您的实用程序方法使用的是静态mapper ,但这可能不是一个好主意。

奇怪的发现是不使用c.getName() c.getClass()当然是Class

错误以某种方式传递了c.getClass() 或有可能:映射器已重用。

您正在寻找的可能是c.getName()而不是c.getClass()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM