将ArrayList转换为Array会抛出java.lang.ArrayStoreException

时间:2013-02-27 18:58:34

标签: java arrays exception arraylist throws

我有一个方法convertToArray(),可以将ArrayList转换为数组。每次将元素添加到ArrayList时,我都想调用此方法。

public class Table extends ArrayList<Row>
{
public String appArray[]; //Array of single applicant details
public String tableArray[][]; //Array of every applicant
/**
 * Constructor for objects of class Table
 */
public Table()
{
}

public void addApplicant(Row app)
{
    add(app);
    convertToArray();
}

public void convertToArray()
{
    int x = size();
    appArray=toArray(new String[x]);
}

}

当我调用addApplication(Row app)方法时,我收到错误:java.lang.ArrayStoreException

所以我将addApplicant()方法更改为:

 public void addApplicant(Row app)
 {
    add(app);
    if (size() != 0)
    convertToArray();
}

我收到相同的错误消息。有什么想法吗?我想如果它在转换它之前检查ArrayList有元素,那么不应该抛出错误吗?

如果需要,我可以提供完整的错误

1 个答案:

答案 0 :(得分:17)

  

抛出ArrayStoreException以指示已尝试将错误类型的对象存储到对象数组中。

所以,

public Row[] appArray; // Row - because you extend ArrayList<Row>

public void convertToArray()
{
    int x = size();
    appArray = toArray(new Row[x]);
}