我有如下方法:private static Object getValue(Object bean)
{
Class c=null;
Field f=null;
c=bean.getClass();
f=c.getDeclaredField("nsr");
f.setAccessible(true);
return f.get(bean);
}现在的问题是我传给的bean是有值的。运行到f=c.getDeclaredField("nsr");就抛出异常了。我是想得到bean中的我指定属性的值。此属性是私有属性。

解决方案 »

  1.   

    有这等事? 先用c.getDeclaredFields() 输出下看看都有哪些变量 有没有你的那个nsr
      

  2.   

    没有我要的那个nsr,但在调试时,看到bean的属性里是有nsr的。
      

  3.   

    如果这个私有属性有get方法如 getNsr可以通过反射
    try {
    Method m =  c.getDeclaredMethod("getNsr");
    f = (Field)m.invoke(c.newInstance());
    } catch (Exception e) {
    e.printStackTrace();
    }
      

  4.   

    我跟踪调试,发现C里的DeclaredMethods,DeclaredFields都是NULL的。
      

  5.   

    问题发现了。是我得到的类的nsr属性是继承自他父类的。我得调用一下c.getSuperClass()才行。。