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