2013-02-27 83 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