用Java反映数组

时间:2011-11-25 22:09:53

标签: java arrays reflection

我是Java新手,有一个编写应用程序的任务。面对一个无法通过的问题:(

问题是通过反射更新数组元素(应用程序选择公共数组来更新dinamicaly,具体取决于从文件读取的字符串应用程序):

首先,我反映了布尔变量如下:

activity = activityName(activities[i].substring(0,activities[i].lastIndexOf('.', activities[i].length() - 4)));  
Field field = refClass.getField(activity);  
Object obj = field;  
field.setBoolean(obj, true);

这对我很有用。但现在我需要使用数组而不是常规变量,并尝试按如下方式进行:

activity = activityName(activities[i].substring(0, activities[i].lastIndexOf('.',  activities[i].length() - 4)));  
Field field = refClass.getField(activity);  
Object field_act = field;  
field_act.setBoolean(field_act, LMKStorage.currentLmkSlot, true);

获得异常“Argument not a array”。 :(

field_act.setBoolean(field_act, LMKStorage.currentLmkSlot, true);中,field_act是boolean []我得到.getField(activity)LMKStorage.currentLmkSlot是int来确定要设置的数组的位置,“true”是要设置的值。我必须获得100%的field_act是一个数组,因为我在refClass中没有非数组静态变量。

到目前为止,我已经学过书了。但仍然没有。试图google任何更新数组元素的例子......对我来说没用。

请指教。

1 个答案:

答案 0 :(得分:1)

对于数组,请使用java.lang.reflect.Array代替java.lang.reflect.Field

Object field_act = field.get(obj);
Array.setBoolean(field_act, LMKStorage.currentLmkSlot, true);