2014-04-24 70 views
1
public String[] getAllKeys(){ 

    Object[] keysCopy = new Object[keys.size()]; 
    keysCopy = keys.toArray(); 

    return ((String[])keysCopy()); 
} 

爲什麼這給了我Ljava.lang.Object;不能轉換爲[Ljava.lang.String ??不能返回一個對象[]鑄造爲字符串[]

+1

使用重載的方法'指定者(T [] ARR)' –

+0

的可能重複【JAVA:(字符串\ [\])名單.toArray()給出ClassCastException](http://stackoverflow.com/questions/5690351/java-stringlist-toarray-gives-classcastexception) –

回答

2

這是因爲你有對象數組而且Object[]不能被轉換爲String[]。反過來也是可能的。它因爲ObjectIS NOT AStringStringIS AObject

如果確保keys內容收集String,那麼你可以使用keys.toArray(new String[keys.size()]);

public String[] getAllKeys(){ 
    return keys.toArray(new String[keys.size()]); 
} 
0
`return Arrays.copyOf(keysCopy, keysCopy.length, String[].class);` 
0

試試這個,它的工作原理。

public String[] getAllKeys(){ 
Object[] keysCopy = new Object[keys.size()]; 
keysCopy = keys.toArray(new String[0]); 
return (String[]) keysCopy; 
} 

欲瞭解更多,你可以閱讀這篇[文章](How to convert object array to string array in Java