リクエストオブジェクトから完全なパラメータマップを取得し、それを反復しようとしています。ここでRequest.getParameterMapの値が文字列にキャストできない
サンプルコード
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);
}
値オブジェクトが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);
}
のインスタンスであり、それはのようにしか印刷しないこと出力からその明らか出力
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
あります以前の出力ごとに値を出力しているはずですが、instanceOfチェックを削除してもClassCastExceptionこれは期待された動作ですか、私はここで何か間違っていますか?
三つの可能性:1.あなたは(見つけるために、代わりにSTRING' 'の' java.lang.String'を使用してみてくださいどこかにクラス 'STRING'を再宣言しましたでる)? 2. 2つのコードを実行するとき、まったく同じ値を使用していますか? 3. 'String.valueOf(value)'または 'value.toString()'を使って何が起こるかを見てみましょう。それが役に立てば幸い。 –
ああ、忘れて、それは配列です。私をだました。 –