我有一个以 JSON 格式存在的异构地图,我想对其进行解析并将其转换为异构地图对象(类HeterogeneousMap
)。
为了解析地图,我使用了一个对象,该对象定义了地图可以具有的所有已知键(类HeterogeneousMapStructure
)。
该MapKey<T>
接口具有T parseValue(JsonReader jsonReader)
解析键值的方法。
我遇到的问题是如何将解析后的值放入类型安全的异构映射对象中:
public class HeterogeneousMap {
public <T> void put(MapKey<T> mapKey, T value) {
// Put key and value in map
}
}
public interface MapKey<T> {
T parseValue(JsonReader jsonReader) throws IOException;
}
public class HeterogeneousMapStructure {
private final List<MapKey<?>> keyList;
public HeterogeneousMap parseMap(JsonReader jsonReader) {
HeterogeneousMap heterogeneousMap = new HeterogeneousMap();
// ... find matching key
MapKey<?> matchingMapKey = ...;
/*
* Compiling error:
* The method put(TestClass.MapKey<T>, T) in the type TestClass.HeterogeneousMap
* is not applicable for the arguments (TestClass.MapKey<capture#1-of ?>, capture#2-of ?)
*/
heterogeneousMap.put(matchingMapKey, matchingMapKey.parseValue(jsonReader));
return heterogeneousMap;
}
}
有没有办法解决这个问题?