Convert ArrayList to Array throws java.lang.ArrayStoreException

Hoggie1790 picture Hoggie1790 · Feb 27, 2013 · Viewed 19.9k times · Source

i have a method convertToArray() which converts an ArrayList to an array. I want to call this method every time an element is added to the 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]);
}

}

When i call the addApplication(Row app) method I get the error: java.lang.ArrayStoreException

So I changed my addApplicant() method to:

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

I get the same error message. Any ideas why? I figured if it checks the ArrayList has elements before converting it the error should not be thrown?

I can provide the full error if needed

Answer

Anton-M picture Anton-M · Feb 27, 2013

ArrayStoreException thrown to indicate that an attempt has been made to store the wrong type of object into an array of objects.

So,

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

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