我是Java新手,有写任何应用程序的任务。面临一个问题,其不能通:(在Java中反映数组
的问题是通过反射来更新一个数组元素(应用选择公共阵列来更新dinamicaly取决于字符串app读取文件时):
首先,我已经反映布尔变量如下:
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
是布尔[] i相.getField(activity)
得到AM,LMKStorage.currentLmkSlot
为int确定哪个阵列的位置来设置和“true”是值来设置该field_act我必须获得100%是一个数组,因为我在refClass中没有非数组的静态变量。
到目前为止我已经学习了我的书。
请指教
你为什么使用field_act变量而不是field? 'Object'没有'setBoolean'方法。你能发布你的实际代码吗? – Kane
我对你的工作例子有点困惑。你的obj变量是字段表示对象? obj应该是你的refClass的一些实例。 –
其实,我尝试了很多方法,而'field'也是。 activity = activityName(activities [i] .substring(0,activities [i] .lastIndexOf('。',activities [i] .length() - 4))); Field field = refClass.getField(activity); 对象field_act = field; Array.setBoolean(field,LMKStorage.currentLmkSlot,true);只是尝试使用'Field',它是'Field'类型并得到:java.lang.IllegalArgumentException:参数不是数组 – Juris