gpt4 book ai didi

java - 在Java中反射数组

转载 作者:行者123 更新时间:2023-12-01 15:39:39 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com