2011-11-05 77 views
0



鑄造對象陣列,以自定義類陣列

我創建派生對象的一個​​類和我有一個對象陣列。
怎麼做投對象數組我的課陣列

public class CastArray{ 

public CastArray(){ 
} 

public long toLong(){ 
    return Long.parseLong(this.toString()); 
}  

public double toDouble(){ 
    return Double.parseDouble(this.toString()); 
} 

public int toInteger(){ 
    return Integer.parseInt(this.toString()); 
} 
}<br /> 

返回錯誤:
java.lang.ClassCastException:[Ljava.lang.Object;不能轉換爲[LBasic.CastArray;

+2

在java中,你不需要明確寫出「extends Object」。 – Scorpion

回答

3

的問題是有點含糊,但讓我嘗試回答。如果對象數組實際上是你的類的數組,你可以直接對你的數組進行轉換,例如A[] a = (A[]) objArray;。或者,如果您知道每個元素都可以投射到您的類中(是您的類的實例或它的一個子類),則可以通過創建一個新數組並將每個元素添加到您的類中來將其克隆。例如: -

A[] a = new A[objArray.length]; 
int i = 0; 
for (Object o : objArray) { 
    a[i++] = (A) o; 
} 
+0

這是它是如何做'System.arrayCopy(objArray,0,A,0,則爲a.length)' – bestsss

1

這聽起來像你問如何做到這一點:

對象[] objectArray = {};

CastArray castArray =(CastArray)objectArray;

如果是這種情況下,你不能。

+0

好一個可以做這樣的事情:徽章[] =徽章(徽章[])clazz.cast(Array.newInstance (clazz.getComponentType(),0)); – slott