所以我有一个可能是数组的对象。它也可以是原始的,或者是一个字符串。如果它是一个数组,它可以是几乎任何东西的数组。将对象投射到阵列
我没有问题搞清楚它是否是一个数组,但我似乎无法将它转换为任何可以迭代以获取值的东西。
// 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