java - 通过反射获取int[]的值

标签 java arrays reflection int

好吧,我正在尝试通过反射获取 int[] 的值,但效果很差。这是我的代码:

我想要获得的值(value)

public int[] blah;

for(Field f : c.getDeclaredFields()) {
    f.setAccessible(true);
    if(f.getName().toLowerCase().contains("blah")) {
       Logger.write("Name: "+f.getName() +" Value:"+Array.get(f, 1));
    }
}

无论我做什么,我都会不断收到“blah is not an array”。

最佳答案

您正在尝试传递字段而不是字段值。首先,您需要使用 f.get(someObject)someObject 获取实际数组,然后对结果调用 Array.get对象,如下所示:

if(f.getName().toLowerCase().contains("blah")) {
    Object arr = f.get(id);
    System.out.println("Name: "+f.getName() +" Value:"+Array.get(arr, 1));
}

Demo.

关于java - 通过反射获取int[]的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32169725/

相关文章:

java - 在 toTomCat 上编译 Java Servlet

arrays - 如何创建包含大型数组的结构体数组?

c - 在 C 函数中传递数组

reflection - MEF 与反射

java - 测试时用反射破坏封装有多邪恶?

java - 如何在测试配置中使用相同的bean但具有不同的属性?

java - 从控制台写入文本文件,文件数据未保存

java - 如何观察变量的变化

java - GridBagLayout 和 FlowLayout : Components appearing at unexpected positions

javascript - 使用 for 循环比较数组中的数字