我是 Java 新手,有一个任务是编写一些应用程序。遇到一个无法通过的问题:(
问题是通过反射更新数组元素(应用程序根据从文件中读取的字符串应用程序选择公共(public)数组进行动态更新):
首先,我反射(reflect)了 boolean 变量如下:
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
是 boolean[] 我正在使用 .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);
关于java - 在Java中反射数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8274683/