2013-02-27 81 views
4

我有一个方法convertToArray()它将ArrayList转换为数组。每次将一个元素添加到ArrayList时,我都想调用此方法。将ArrayList转换为数组抛出java.lang.ArrayStoreException

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有元素,则不应抛出该错误?

如果需要

+0

它可以帮助你http://stackoverflow.com/questions/8849163/convert-list-to-array -java-lang-arraystoreexception – exexzian 2013-02-27 19:01:10

回答

15

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

因此,我可以提供完整的错误,

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

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

完美运作。非常感谢。 – Hoggie1790 2013-02-27 19:15:08