将对象[]转换为字符串[]时,iam获取以下代码的java.lang.ArrayStoreException public void createCSV(地图){ String reportPath=“C:/Users/nandini/Desktop/file.csv”; 试一试{ FileWriter FileWriter=新的FileWriter(reportPath); CSVWriter CSVWriter=新的CSVWriter(文件写入程序, CSVWriter.DEFAULT_分隔符, CSVWriter.NO_QUOTE_字符, CSVWriter.DEFAULT\u转义\u字符, CSVWriter.DEFAULT\u LINE\u END); String[]header=map.keySet().toArray(新字符串[map.size()]); Object[]data=map.values().toArray(新对象[map.size()]); String[]stringArray=Arrays.copyOf(data,data.length,String[].class); //向csv添加数据 csvWriter.writeNext(标题); csvWriter.writeNext(stringArray); csvWriter.close(); }捕获(例外e){ 错误(e); } }
发生这种情况的原因如下:将对象[]转换为字符串[]时,iam获取以下代码的java.lang.ArrayStoreException public void createCSV(地图){ String reportPath=“C:/Users/nandini/Desktop/file.csv”; 试一试{ FileWriter FileWriter=新的FileWriter(reportPath); CSVWriter CSVWriter=新的CSVWriter(文件写入程序, CSVWriter.DEFAULT_分隔符, CSVWriter.NO_QUOTE_字符, CSVWriter.DEFAULT\u转义\u字符, CSVWriter.DEFAULT\u LINE\u END); String[]header=map.keySet().toArray(新字符串[map.size()]); Object[]data=map.values().toArray(新对象[map.size()]); String[]stringArray=Arrays.copyOf(data,data.length,String[].class); //向csv添加数据 csvWriter.writeNext(标题); csvWriter.writeNext(stringArray); csvWriter.close(); }捕获(例外e){ 错误(e); } },java,spring-boot,csv,Java,Spring Boot,Csv,发生这种情况的原因如下: public void createCSV(Map<String, Object> map) { String reportPath = "C:/Users/nandini/Desktop/file.csv"; try { FileWriter fileWriter = new FileWriter(reportPath); CSVWriter csvWriter = new CSVWr
public void createCSV(Map<String, Object> map) {
String reportPath = "C:/Users/nandini/Desktop/file.csv";
try {
FileWriter fileWriter = new FileWriter(reportPath);
CSVWriter csvWriter = new CSVWriter(fileWriter,
CSVWriter.DEFAULT_SEPARATOR,
CSVWriter.NO_QUOTE_CHARACTER,
CSVWriter.DEFAULT_ESCAPE_CHARACTER,
CSVWriter.DEFAULT_LINE_END);
String[] header = map.keySet().toArray(new String[map.size()]);
Object[] data = map.values().toArray(new Object[map.size()]);
String[] stringArray = Arrays.copyOf(data, data.length, String[].class);
// adding data to csv
csvWriter.writeNext(header);
csvWriter.writeNext(stringArray);
csvWriter.close();
} catch (Exception e) {
logger.error(e);
}
}
声明如果从原始复制的元素不是可以存储在newType类数组中的运行时类型,则该方法将抛出一个ArrayStoreException
因此,如果对象[]
数组包含的元素不是字符串,则会引发此异常。您可以使用toString()
方法获取其字符串表示形式,而不是将元素强制转换为字符串
String[] stringArray = Arrays.copyOf(data, data.length, String[].class);
编辑:
没有溪流
String[] stringArray = Arrays.stream(data)
.map(Object::toString)
.toArray(size -> new String[size]);
String[]stringArray=新字符串[data.length];
对于(int i=0;i
并非每个值对象都是字符串
。你不能假设不是这样。您必须测试或使用String.valueOf()
。您能告诉我如何用java1编写吗。7@nandini只需在对象[]
数组上执行一个简单的循环,并将每个对象的toString()
分配给字符串[]
数组。我建议你试着自己写,这样会更好:)当然,谢谢你会尝试的
String[] stringArray = new String[data.length];
for (int i = 0; i < data.length; i++) {
stringArray[i] = data[i].toString();
}