【问题标题】:Getting value of int[] via reflection通过反射获取 int[] 的值
【发布时间】:2015-08-23 17:58:40
【问题描述】:

好的,所以我正在尝试通过反射获得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”。

【问题讨论】:

    标签: java arrays reflection int


    【解决方案1】:

    您正在尝试传递字段而不是字段值。首先,您需要使用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.

    【讨论】:

    • 可能想指出这是假设Class c = id.getClass()
    • 感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-19
    相关资源
    最近更新 更多