Преобразование ArrayList в массив вызывает java.lang.ArrayStoreException

у меня есть метод 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 перед преобразованием, ошибка не должна выдаваться?

Я могу предоставить полную ошибку, если нужно


person Hoggie1790    schedule 27.02.2013    source источник
comment
это может помочь вам stackoverflow.com /вопросы/8849163/   -  person exexzian    schedule 27.02.2013


Ответы (1)


ArrayStoreException вызывается, чтобы указать, что была предпринята попытка сохранить объект неправильного типа в массиве объектов.

So,

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

public void convertToArray()
{
    int x = size();
    appArray = toArray(new Row[x]);
}
person Anton-M    schedule 27.02.2013