java反射访问私有字段抛出NoSuchFieldException甚至该字段存在

时间:2015-08-10 10:25:28

标签: java reflection

我有一个私人领域的课程

public class HibernateSessionFactoryManager{
    private SessionFactory sessionFactory;
}

现在我想使用私有字段对某些方法进行单元测试。所以我试图使用java 反射来访问私有字段。

 try {
        Field field = HibernateSessionFactoryManager.class.getDeclaredField("sessionFactory");
        field.setAccessible(true);
        //field.set
        SessionFactory sessionFactory = (SessionFactory) field.get(manager);
    } catch (NoSuchFieldException e) {
        System.out.println("no such");
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }

我正在

java.lang.NoSuchFieldException: sessionFactory at java.lang.Class.getField(Class.java:1584)

我无法弄清楚我在做什么错误。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

为了与Mockito遇到类似问题的人的利益:使用x.iter().filter(|x| x == &&x.chars().rev().collect::<String>()); x.iter().filter(|x| *x == &x.chars().rev().collect::<String>()); x.iter().filter(|x| **x == x.chars().rev().collect::<String>()); 设置私有字段时,必须使用class.getDeclaredField()直接实例化要设置私有字段的对象,不是通过致电Mockito的new