Java反射.访问字段的值



我正在尝试用Java反射完成一个程序。这部分我有问题。我无法得到我正在寻找的字段的值。

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;
        }
    }
}

使用这个代码,我得到这个消息:

. lang。不能设置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.

相关内容

  • 没有找到相关文章

最新更新