- 締切済み
Object[ ][ ]へのキャストについて
こんにちは。 csvファイルのデータをQueryRunner.batchメソッドでインサートしたいのです。 以下のメソッドでcsvファイルから取り出したデータをカンマで区切り、 Object[][]の形で帰したいのですが、うまくいきません。 次のExceptionが発生してしまいます。 java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [[Ljava.lang.String; どのようにしたら良いか、ご教授願えないでしょうか。 お願いします。 private Object[][] getParm(List dataList, int colCnt){ List parmList = new ArrayList(); String data; for(Iterator ite = dataList.iterator(); ite.hasNext(); ){ data = (String) ite.next(); //Stringをフィールド毎の配列に変換 String[] fieldList = new String[colCnt]; //データのカラム数分の配列を作成 String[] tempList = data.split(","); System.arraycopy(tempList, 0, fifieldList); } return (String[][]) parmList.toArray(); }
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- auty
- ベストアンサー率58% (284/486)
・ エラーは、 data = (String) ite.next(); で起こっていると思われるので、まず引数 List dataList に、csvファイルの各行が文字列として入っているかどうかが疑われます。 まずそのことを確認してみてください。 ・ 次にメソッドを次のように置き換えて実行してみてください。 ------------------------------------------------------------ private static String[][] getParm(ArrayList dataList, int colCnt) { String[][] ss2 = new String[dataList.size()][]; int k=0; for (Iterator ite = dataList.iterator(); ite.hasNext(); k++) { String data = (String) ite.next(); ss2[k] = data.split(","); } return ss2; } ------------------------------------------------------------ ・ 何処でエラーが起こったかを知らせてもらえますか。
- _ranco_
- ベストアンサー率58% (126/214)
private Object[][] getParm(List dataList, int colCnt){ // private String[][] getParm(List dataList, int colCnt){ //こっちにすべき List parmList = new ArrayList(); String data; for (Iterator ite = dataList.iterator(); ite.hasNext(); ){ data = (String)ite.next(); String[] fieldList = new String[colCnt]; String[] tempList = data.split(","); System.arraycopy(tempList, 0, fifieldList); //不正かつ意味不明な呼び出し //一体何のために別の配列にコピーすんの??, コピーしなくてもいいのでは? //しかも、こんな無防備な操作では、ちゃんとcolCnt個あるのか、ヤバイよ. } return (String[][]) parmList.toArray(); // parmListは空のまま?? // return parmList.toArray(new String[1][1]); //こちらを使う // ... ArrayListのドキュメンテーションを読んでください }