java - 在Java中反射数组

标签 java arrays reflection

我是 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/

相关文章:

java - Java 线程库

.net - 获取通过 lambda 表达式传递的方法名称?

Java 获取方法 "class not found"

java - 在 Java 中,this.method() 和 method() 有什么区别?

java.lang.IllegalStateException : enterPictureInPictureMode: Current activity does not support picture-in-picture

java - 从一个表中读取行并将其复制到Java中的另一个数据库表中

java - 在函数原型(prototype)中它显示错误

javascript - javascript中数组排序方法的困惑点

javascript - 根据包含的数组内容过滤对象数组。 Vanilla JS,lodash,还有其他一些 React 相关技术吗?

java - 是否有一个忽略 .equals 的 java Set 集合