- ベストアンサー
Vectorを引数としたメソッド
今回、初めてVectorを使ったプログラミングをしているのですが、どうしてもエラーの原因がわからないので質問します。ベクターと整数を引数としたメソッドを作っているのですが、このメソッドの bwEmployeeInfo.write(vPassedVector.get(nCounterFor)); で「Cannot Resolve Symbol」というメッセージが出ています。何か思い当たることがあれば教えていただけるとうれしいです。念のためエラーメッセージを最後につけておきます。 よろしくお願いします。 public void writeEmployees(Vector vPassedVector, int nPassedNumber) { BufferedWriter bwEmployeeInfo = null; if (vPassedVector.get(0) != null) { //Open a.dat File(o) try { bwEmployeeInfo = new BufferedWriter(new FileWriter("c:/a.dat")); ; System.out.println("error opening output file"); //Print detail line to a.dat file for (int nCounterFor = 0; nCounterFor < nPassedNumber; nCounterFor ++) { //ここでエラーがおきています。 bwEmployeeInfo.write(vPassedVector.get(nCounterFor)); bwEmployeeInfo.newLine(); } //end for bwEmployeeInfo.flush(); } //end try catch (IOException ioe) { System.out.println("error writing output file"); } } //end if } //end method エラーメッセージは以下。 cannot resolve symbol symbol : method write (java.lang.Object) location: class java.io.BuffredWriter bwEmployeeInfo.write(vPassedVector.get(nCounter));
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Vector#getの戻りはObject。 でもwriteの引数は以下。 void write(char[] cbuf, int off, int len) 文字の配列の一部を書き込みます。 void write(int c) 単一の文字を書き込みます。 void write(String s, int off, int len) String の一部を書き込みます。 void write(char[] cbuf) 文字の配列を書き込みます。 void write(String str) 文字列を書き込みます。 void write(String str, int off, int len) 文字列の一部を書き込みます。 Vectorの中身について書いてありませんが、 たぶん、Vectorの各要素がStringなのに、なぜ? ということでしょうか。 スーパークラスからサブクラスへのキャストは 明示しないキャストになりませんから 型がちがうよ、といわれると思います。 bwEmployeeInfo.write((String)(vPassedVector.get(nCounterFor))); で試してみたらどうでしょうか。 要素がStringでなければ実行時に例外がでますが。
その他の回答 (1)
- mu_nya
- ベストアンサー率50% (2/4)
Vectorから取り出した値 vPassedVector.get(nCounterFor) の型を明示的に記述する必要があります。 これを「キャスト」といいます。 bwEmployeeInfo.write メソッドの引数の型が何であるかは情報不足でわかりませんが、例えば引数が String 型であるのであれば bwEmployeeInfo.write((String)(vPassedVector.get(nCounterFor))); とします。
お礼
回答ありがとうございました。おかげさまで無事に解決しました。
お礼
お礼が遅くなり申し訳ありませんでした。 今回は、nobi2000さんがおっしゃるとおりString型でしたので、教えていただいた方法で無事にとおりました。回答ありがとうございました。