我正在检索用户日期的地图,类型为HashMap<String, String>
的数据地图,并且它具有此键值对,字符串和大小为6的byte[]
。
以前是否有人见过这个或知道该怎么做?
答案 0 :(得分:2)
你的代码有些可疑。
这些陈述暗示MappedRecord
必须实施Map<String, String>
。
record = (MappedRecord) obj;
item = new HashMap<String, String>();
item.putAll(record);
但是你说这是插入一个值类型为byte[]
的条目。这是可能的,但它必须意味着某处/以某种方式以前将该条目添加到MappedRecord
对象。为了实现这一点,您必须抑制或忽略“未经检查的转换”警告。
(请注意,putAll
代码不会检查它添加到item
的条目是否具有正确的键和值类型。它不能!{{1}的代码由于类型擦除,我不知道参数类型应该是什么...而是HashMap.putAll
代码假定实际键和值的类型是正确的。它们应该是...除非你忽略/压制警告。)
无论哪种方式,如果没有看到putAll
类的代码,以及创建其中包含伪造条目的MappedRecord
实例的代码,我们将无法正确诊断此问题。
答案 1 :(得分:0)
据推测这是Java。
虽然声明HashMap<String, String>
声明HashMap应该是String-&gt; String,但编译器中的静态类型检查并不是密不可测的(假设它是一种粘在先前存在的语言上的kluge) )。
并且没有动态类型检查来确保(A)HashMap确实是HashMap<String, String>
,而(B)某人没有将数组插入HashMap<String, String>
。这是因为实际上你拥有的是HashMap<Object, Object>
,所以没有办法实现动态检查。