我是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中没有非数组静态变量。
请指教。
答案 0 :(得分:1)
对于数组,请使用java.lang.reflect.Array
代替java.lang.reflect.Field
。
Object field_act = field.get(obj);
Array.setBoolean(field_act, LMKStorage.currentLmkSlot, true);