实体类Bean:
public class User {
private String userName;
private String password;
private Integer count; public String getUserName() {return userName;} public void setUserName(String userName) {this.userName = userName;} public String getPassword() {return password;} public void setPassword(String password) {this.password = password;} public Integer getCount() {return count;}        public void setCount(Integer count) {this.count = count;}
}
当我实例化一个User时候,通过反射user.getClass().getDeclaredFields();可以得到它的所有属性
问:如何得到这个实例user的所有值呢,因为UserBean是私有属性,无法通过反射的get方法得到

解决方案 »

  1.   

    私有的加get/set..好囧,不过LZ可以看下这个例子
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;public class ReflectDemo {    public static void main(String[] args) throws Exception {        PrivateTest t = new PrivateTest();
            Field field = Class.forName("com.test.PrivateTest").getDeclaredField(
                    "str");
            // 不让Java语言检查访问修饰符
            field.setAccessible(true);
            field.set(t, "world");
            t.getStr();        Method method2 = Class.forName("com.test.PrivateTest")
                    .getDeclaredMethod("method", new Class[] {});
            method2.setAccessible(true);
            method2.invoke(t, new Object[] {});    }
    }class PrivateTest {
        private String str = "hello";    public void getStr() {
            System.out
                    .println("I'm str,I'm a private field,my old value is hello,now I am --->"
                            + str);
        }    private void method() {
            System.out.println("I'm in a private method!");
        }
    }--------------结果---------------------
    I'm str,I'm a private field,my old value is hello,now I am --->world
    I'm in a private method!
      

  2.   

    我想通过反射把已经new好的对象的值得到!!!!!!!!!!!!!!!!!1
      

  3.   

    楼主的问题不是很明确,如果要有类的实际路径的话就可以根据路径实例化出对象Class.forName("com.test.PrivateTest"),如果要是实例出的对象的属性需要赋值进去,或者用反射的方式获取或赋值,也可以用对象来set或者get,网上也有很多反射的例子,不是很难,看看就能明白了。
      

  4.   

    public static void addToken(Object obj){
    Field[] t = obj.getClass().getDeclaredFields();// 得到属性名部分
    for (Field field : t) {
                            System.out.println(field);
    field.get(obj);
    }
    }
    这么说吧  比如说我new 一个User的实例,User u = new User();u.setPassword("1234");u.setUserName("f1");u.setCount(12);我传到上面的方法里面,在上面的addToken方法里面通过反射本来field.get(obj);是可以得到实例属性的值的,但是由于实体类属性私有,所以得不到了,就是需要各位大侠帮忙解决这个问题
      

  5.   

    办法1:
    public static void addToken(Object obj){
    Field[] t = obj.getClass().getDeclaredFields();// 得到属性名部分
    for (Field field : t) {
      System.out.println(field);
    field.setAccessible(true);
    field.get(obj);
    }
    }办法2:
    public static void addToken(Object obj){
    Field[] t = obj.getClass().getDeclaredFields();// 得到属性名部分
    for (Field field : t) {
      System.out.println(field);
    [color=#FF0000]
    String methodname = "get" + field.getName.substring(0,1).toUpperCase() + field.getName.substring(1);
    Object value = obj.getClass().getMethod(methodname).invoke(obj);
    color]
    }
    }