我正在尝试从请求对象中获取完整的参数映射并迭代它。
这是示例代码
Map map = request.getParameterMap();
for(Object key : map.keySet()){
String keyStr = (String)key;
Object value = map.get(keyStr);
System.out.println("Key " + (String)key + " : " + value);
}
输出
Key businessunit : [Ljava.lang.String;@388f8321
Key site : [Ljava.lang.String;@55ea0889
Key startDate : [Ljava.lang.String;@77d6866f
Key submit : [Ljava.lang.String;@25141ee0
Key traffictype : [Ljava.lang.String;@4bf71724
从输出中可以看出,value对象是String
的一个实例now when i change my code to something like this
Map map = request.getParameterMap();
for(Object key : map.keySet()){
String keyStr = (String)key;
Object value = map.get(keyStr);
if(value instanceof String)
System.out.println("Key " + (String)key + " : " + (String)value);
}
它只打印任何内容,但按照上一个输出它应该打印值,如果我删除instanceOf检查它给出ClassCastException。这是预期的行为还是我在这里做错了什么?
答案 0 :(得分:6)
[Ljava.lang.String;@XXXXXXX
表示它是String
而不是单个String
的数组。因此,您的情况会失败并且不会打印任何内容。
答案 1 :(得分:6)
由于Harry Joy指出,返回的对象是一个字符串数组,您必须使用Arrays.toString()
方法才能将该数组转换为可打印的字符串:
Map map = request.getParameterMap();
for (Object key: map.keySet())
{
String keyStr = (String)key;
String[] value = (String[])map.get(keyStr);
System.out.println("Key" + (String)key + " : " + Arrays.toString(value));
}
答案 2 :(得分:2)
该值是一个数组。如果你确定数组不是空的,你应该得到这样的字符串值:
String value = (String) map.get(keyStr)[0];