在Java中反映一个数组



我是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);

相关内容

  • 没有找到相关文章

最新更新