I need to write List<MyClass> myList
into CSV file. In particular I need to write values
. MyClass has the following implementation:
public class MyClass {
private Object[] values;
//...
@Override
public String toString()
{
String line = "";
for (int i=0; i<this.getSize(); i++) {
//if (this.values[i] != null) {
line = line + this.values[i] + " ";
//}
}
return line;
}
}
The code is the following:
private void saveSolutionToCSV(List<MyClass> solution) {
int columnSize = solution.get(0).getSize();
try {
FileWriter writer = new FileWriter("test.csv");
Iterator result = solution.iterator();
while(result.hasNext()) {
for(int i = 0; i < columnSize; i++) {
CharSequence element = (CharSequence)result.next();
writer.append(element);
if(i < columnSize - 1)
writer.append(',');
}
writer.append('\n');
}
}
catch(Exception e)
{
e.printStackTrace();
}
}
And the error message is the following:
java.lang.ClassCastException: myPackage.MyClass cannot be cast to java.lang.CharSequence
How to solve this problem? Thx.
Try:
ReplyDeleteString element = result.next().toString();
writer.append(element);
if(i < columnSize - 1)
writer.append(',');
You need to call toString() before casting to CharSequence.
ReplyDeleteTry calling the toString() method explicitly like
ReplyDeleteCharSequence element = (CharSequence)result.next().toString();