我是Java新手,有一个任务来编写一些应用程序。面对一个不能通过的问题:(
问题是通过反射来更新数组元素(应用程序选择公共数组动态更新取决于字符串应用程序从文件中读取):
首先,我将布尔变量反映如下:
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);
得到异常"参数不是数组"。(
在field_act.setBoolean(field_act, LMKStorage.currentLmkSlot, true);
中,field_act
是布尔值[]我与.getField(activity)
一起获得,LMKStorage.currentLmkSlot
是int以确定要设置的数组的哪个位置,"true"是要设置的值。我必须得到100%的field_act是一个数组,因为我没有refClass中的非数组静态变量。
请建议。
对于数组,请使用java.lang.reflect.Array
而不是java.lang.reflect.Field
。
Object field_act = field.get(obj);
Array.setBoolean(field_act, LMKStorage.currentLmkSlot, true);