所以我有一個可能是數組的對象。它也可以是原始的,或者是一個字符串。如果它是一個數組,它可以是幾乎任何東西的數組。將對象投射到陣列
我沒有問題搞清楚它是否是一個數組,但我似乎無法將它轉換爲任何可以迭代以獲取值的東西。
// o is an object and clazz is the class of the o
if (clazz == Array.class) {
Class ofArray = o.getClass().getComponentType();
String arrayType = ofArray.getName(); // 'Double' for my test case
//ERROR: [D cannot be cast to [Ljava.lang.Object
Object[] objects = (Object[]) o;
}
我的背景是在紅寶石和PHP(它只會工作)和靜態打字與我的頭搞亂。有任何想法嗎?
編輯:
這引發錯誤
[D cannot be cast to [Ljava.lang.Object.
我缺少什麼?
if (o.getClass().isArray()) {
Object[] objects = (Object[]) o;
}
您可以測試一個對象以查看它是否爲數組。這個問題解決了這個問題:http://stackoverflow.com/questions/219881/java-array-reflection-isarray-vs-instanceof然後你可以安全地轉換它。 – Marvo 2013-05-07 19:52:23
那麼爲什麼我的例子中的演員沒有工作? – 2013-05-07 19:55:31
不確定,但可能該特定對象不是數組。 'clazz == Array.class'可能讓一些非數組對象通過。 – Marvo 2013-05-07 20:04:50