首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

java读取变量getDeclaredField解决方法

2012-12-17 
java读取变量getDeclaredField如何用反射读取私有属性?希望给我例子谢谢..以及publicclass A {publicStrin

java读取变量getDeclaredField
如何用反射读取私有属性?希望给我例子谢谢..
以及
public  class A {
    public  String m;
    public void functionA(String s1,String s2){
        s1 = "d";
        s2 = "e";
        m = s1 + s2;
    };
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.m);
    }
}
怎么获取改变了的m值
[最优解释]


A a=new A(); 
a.functionA("a","b");//你先调用了这个方法再用反射获得值。
Field field=A.class.getDeclaredField("m");//根据变量名m获得字段 field.setAccessible(true);//设置字段可访问,即暴力反射 String m=(String)field.get(a);//在那个对象上获取此字段的值 System.out.println(m);

[其他解释]

A a=new A();
Field field=A.class.getDeclaredField("m");//根据变量名m获得字段
field.setAccessible(true);//设置字段可访问,即暴力反射
String m=(String)field.get(a);//在那个对象上获取此字段的值
System.out.println(m);

[其他解释]
public static void main(String[] args) {
        A a = new A();
        a.functionA("a", "b");
        System.out.println(a.m);
    }

这样就能获取到改变了的m值
至于你说的反射要想获取一个私有属性的值,那么你需要给私有属性设置get方法,然后通过这个反射调用这个get方法就可以得到值
[其他解释]
引用:
Java code?123456A a=new A();Field field=A.class.getDeclaredField("m");//根据变量名m获得字段field.setAccessible(true);//设置字段可访问,即暴力反射String m=(String)field.get(a);//在那个对象上获取此字段的值System.out.println(……

这个我刚试了下 获得的还是Null。。。。
[其他解释]
引用:
Java code?12345public static void main(String[] args) {        A a = new A();        a.functionA("a", "b");        System.out.println(a.m);    }
这样就能获取到改变了的m值
至于你说的反射要想获取一个私有属性的值,那么你需要给……


这个值是变了 但是和我要的结果不一样...
如果 a.functionA("a", "b"); 我希望他调出来的是 "ab"
我是想通过实例名.属性直接得到那个m在方法中改变了的值
[其他解释]
你不想要"de",为什么要在方法里赋值呢?如果你要返回定值,那这个方法为什么要设置参数呢?
[其他解释]
引用:
你不想要"de",为什么要在方法里赋值呢?如果你要返回定值,那这个方法为什么要设置参数呢?

嗯 就是好奇如果有遇到这种情况的话怎么解决
[其他解释]
引用:
引用:
Java code?123456A a=new A();Field field=A.class.getDeclaredField("m");//根据变量名m获得字段field.setAccessible(true);//设置字段可访问,即暴力反射String m=(String)field.get(a);//在那个对象上获取此字段的值System.out.……


你没给m赋值当然是null了,我只是new出来了A的对象又没给他赋值。你给他赋个值就知道了
[其他解释]
引用:
引用:引用:
Java code?123456A a=new A();Field field=A.class.getDeclaredField("m");//根据变量名m获得字段field.setAccessible(true);//设置字段可访问,即暴力反射String m=(String)field.……


恩 你的方法是把m设成私有的并赋值然后可以取A类私有变量m的值,但是要取出方法里那个被赋过值的m怎么获得?
[其他解释]
引用:
引用:
引用:引用:
Java code?123456A a=new A();Field field=A.class.getDeclaredField("m");//根据变量名m获得字段field.setAccessible(true);//设置字段可访问,即暴力反射String m=(Strin……

一样的你方法的里的m是成员变量你调用下这个方法再去反射,一样能获得值
[其他解释]
引用:
Java code?1234A a=new A(); a.functionA("a","b");//你先调用了这个方法再用反射获得值。Field field=A.class.getDeclaredField("m");//根据变量名m获得字段 field.setAccessible(true);//设置字段可访问,即暴力反射 String m=(String)field.……


恩 谢谢了

热点排行