我正在为 JSON Jackson pojo 序列化/反序列化编写一个包装器。所以我尝试编写一个通用方法,它将一般地返回我反序列化的对象。
我认为代码会更好地解释这一点:
public <K,V, M extends Map<K, V>> M readMap(String path, Class<M> mapType, Class<K> keyClass, Class<V> valueClass) throws JsonParseException, JsonMappingException, IOException
{
ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(new File(path), mapper.getTypeFactory().constructMapType(mapType, keyClass, valueClass));
}
编码
HashMap<String, Double> weightMap;
JSONParsedFileHandler reader = new JSONParsedFileHandler();
weightMap = reader.readMap("weights.model", HashMap.class, String.class, Double.class);
这按预期工作,但是,我收到类型安全警告:
Type safety: The expression of type HashMap needs unchecked conversion to conform to HashMap<String,Double>
我认为这意味着返回的类型与预期的一样,只是它没有像我编码的那样被参数化。
有人有想法吗?