通过反射获取 int[] 的值

Getting value of int[] via reflection

好的,所以我试图通过反射获取 int[] 的值,但进展不顺利。这是我的代码:

我想要获得的价值

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.