com.itextpdf.text.DocumentException:java.lang.ArrayStoreException
Q。当尝试以下代码时,试图将ArrayList更改为上面的String[]数组类型,出现异常。我不知道怎么了。
try {
Class.forName("com.mysql.jdbc.Driver");
String url ="jdbc:mysql://localhost/falg_check";
con = DriverManager.getConnection(url,"root", "root");
stmt = con.createStatement();
rs4 = stmt.executeQuery("SELECT * from records");
String[] arrayOfStrings;
ArrayList<String[]> name=new ArrayList<String[]>();
while(rs4.next()){
String insert =rs4.getString("name");
final String[] res={insert};
name.add(res);
}
//Object[] x=name.toArray();
arrayOfStrings = name.toArray(new String[name.size()]); //<---------------
}
catch(Exception e) {
System.out.println(ioe);
throw new ExceptionConverter(ioe);
}
EDIT:
*我需要一维数组,这样我就可以把这些值放在text.setChoices(arrayOfStrings)中;它通过JAVA在PDF文件的下拉菜单中设置选项*
编辑:如何避免重复。:
我希望ArrayList用String Array更改引用中的类型,而stackoverflow上的任何问题都不是这样。我也想要一维数组。理解2D int数组和线性字符串数组之间的区别并不难。是的,这个概念可能与其他几个类型转换问题相匹配,但这是一个部分/条件不同的问题。
您已经定义了
ArrayList<String[]> name=new ArrayList<String[]>()
当您调用name.toArray()
时,您会得到一个原始列表所包含类型的元素数组。由于您的列表包含String[]
实例,name.toArray()
返回一个String[][]
,即字符串数组的数组,而不是字符串数组。
因此,要么您实际上必须使用字符串数组的数组:
String[][] arrayOfStrings;
...
arrayOfStrings = name.toArray(new String[name.size()][]);
或者使用字符串列表而不是字符串数组列表:
ArrayList<String> name=new ArrayList<String>();
while(rs4.next())
{
String insert = rs4.getString("name");
name.add(insert);
}
或者,在转换为数组之前,将字符串数组列表展平为字符串列表:
String[] arrayOfStrings;
ArrayList<String[]> name = new ArrayList<String[]>();
while(rs4.next())
{
String insert = rs4.getString("name");
final String[] res={insert};
name.add(res);
}
....
ArrayList<String> intermediate = new ArrayList<String>();
for (String[] stringArray: name)
{
if (stringArray != null)
{
intermediate.addAll(java.util.Arrays.asList(stringArray));
}
}
arrayOfStrings = intermediate.toArray(new String[name.size()]);