繁体   English   中英

Java反射。 访问字段的值

[英]Java Reflection. Access the value of a field

我正在尝试使用Java Reflection完成一个程序。 我对此部分有疑问。 我无法获得我想要的字段的值。

Field [] fx = ArrayUtils.addAll(c.getDeclaredFields(),c.getFields());
for (int j = 0; i < fx.length; j++){
    System.out.println(fx[j].toString());
    if( fx[j].isAnnotationPresent(Searchable.class)){
        Searchable ann = fx[j].getAnnotation(Searchable.class);
        System.out.println(ann.field() + " " + fx[j].getGenericType());
        if (ann.field().equals(field)){
    System.out.println ("Found it!");
    try {
        fx[j].setAccessible(true);
        System.out.println((String)fx[j].get(c));
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    break;
        }
    }
}

通过此代码,我得到以下消息:

java.lang.IllegalArgumentException:无法将java.lang.String字段store.model.Book.publisher设置为java.lang.Class

知道我该怎么做吗? 非常感谢。

在这条线...

System.out.println((String)fx[j].get(c));

变量c是Class类型,而不是Book类型。 您需要将get()传递给Book 实例

该错误告诉您,您尝试将String对象插入存储Class对象的字段中。

它可能在这里:

System.out.println((String)fx[j].get(c)); // the c is a Book.class, it should a Book instance object.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM