恐怕你得new一个对象吧。比如 public class A { public String st = "bb"; } 如果是一个已经生成的对象,该字段的值已经被修改了,那么 A a = new A(); a.st = "cc"; try{ Field field = a.getClass().getField("st"); System.out.println(field.get(a)); }catch(Exception e){ 得到的就是cc了,而不是初始值bb。这里是知道对象类型A了,如果不知道,可以考虑用 getClass().getConstructor()得到构造函数,来创建一个新的对象,不过如果构造函数有参数的话,程序就会变得很麻烦了。。
public class A {
public String st = "bb";
}
如果是一个已经生成的对象,该字段的值已经被修改了,那么
A a = new A();
a.st = "cc";
try{
Field field = a.getClass().getField("st");
System.out.println(field.get(a));
}catch(Exception e){
得到的就是cc了,而不是初始值bb。这里是知道对象类型A了,如果不知道,可以考虑用
getClass().getConstructor()得到构造函数,来创建一个新的对象,不过如果构造函数有参数的话,程序就会变得很麻烦了。。
谢谢,你的方法试验过了!
可是数组不认,final的字符不认,还有好的方法嘛??
能不能按我的例子写一下说明啊!
她(他)给的方法可用,但是不适合基本类型的field
数组和定义类型也不识别!
跪求它法!