使用反射解压数组
我正在尝试解压从反映对象字段获得的数组。 我将常规字段的值设置为一个对象。如果它是一个数组,那么我想将我的通用对象转换为数组(无论其类型是什么)并提取其内容
fields[i].setAccessible(true);
String key = fields[i].getName();
Object value = fields[i].get(obj);
if (value.getClass().isArray()){
unpackArray(value);
}
在我的 unpackArray 方法中,我尝试将对象值转换为 java.util.Arrays、java.reflect。 Array 和 Array[] 但每次都不让我这么做。
有没有办法可以将我的对象转换为通用数组?
非常感谢 山姆
I am trying to unpack an array I obtain from reflecting an objects fields.
I set the value of the general field to an Object. If it is an Array I then want to cast my general Object to an array (no matter what its type) and extract its content
fields[i].setAccessible(true);
String key = fields[i].getName();
Object value = fields[i].get(obj);
if (value.getClass().isArray()){
unpackArray(value);
}
In my unpackArray method, I have tried casting the Object Value to java.util.Arrays, java.reflect.Array and Array[] but each time it is not letting me.
Is there a way I can cast my Object to a generic array?
Many Thanks
Sam
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
所有数组的唯一父类是Object。
要将数组的值提取为
Object[]
,您可以使用。The only parent class of all arrays is Object.
To extract the values of an array as an
Object[]
you can use.不幸的是,原始数组和对象数组没有共同的数组类作为祖先。因此,解包的唯一选择是装箱原始数组。如果在调用此方法之前执行 null 检查和 isArray,则可以删除一些检查。
测试:http://ideone.com/iHQKY
Unfortunately primitive Arrays and Object Arrays do not have a common array class as ancestor. So the only option for unpacking is boxing primitive arrays. If you do null checks and isArray before calling this method you can remove some of the checks.
Test: http://ideone.com/iHQKY