通过反射将字段转换为Java中的数组类型

时间:2015-11-22 15:46:30

标签: java arrays reflection casting

我想通过反射获取TextView数组的私有字段,但我需要将此字段转换回数组。

Field f= FieldUtils.getDeclaredField(ContentAdapter.ViewHolder.class, "button_massive", true);

TextView[] f1 = ((TextView[]) f)这样的明确演员无效。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

您直接将Field类型类型转换为数组。这肯定不会奏效。您想要的是使用f方法获取Field#get()的值。然后将结果强制转换为Object[]

Field f= FieldUtils.getDeclaredField(ContentAdapter.ViewHolder.class, "button_massive", true);
Object[] result = (Object[]) f.get(obj);

如果你真的想要TextView类型数组,那么你可以使用并从上面Object[]填充数组来创建数组:

TextView[] f1 = new TextView[result.length];
// Iterate over the `Object` array, and populate `f1` array.

我还没有对此进行测试,但它应该正常运行。