我想通过反射获取TextView数组的私有字段,但我需要将此字段转换回数组。
Field f= FieldUtils.getDeclaredField(ContentAdapter.ViewHolder.class, "button_massive", true);
像TextView[] f1 = ((TextView[]) f)
这样的明确演员无效。
提前谢谢!
答案 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.
我还没有对此进行测试,但它应该正常运行。