黑马程序员技术交流社区
标题:
看javaBean视频的疑惑
[打印本页]
作者:
张文强
时间:
2012-7-1 16:09
标题:
看javaBean视频的疑惑
public class IntroSpectorTest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ReflectPoint pt1 = new ReflectPoint();//创建操作对象实例
String str = "s"; //定义要操作的对象属性名
//"x"-->"X"-->"getX"-->MethodGetX-->
//getMethod(pt1, str);
Object value = "123";
PropertyDescriptor pd1 = new PropertyDescriptor(str, pt1.getClass());
Method methodSetX = pd1.getWriteMethod();
methodSetX.invoke(pt1, value);//此处是设置对象的属性s的值为123,是不是就是类ReflectPoint的s值?
System.out.print(pt1.getS()); //此处得到的是属性s的值为123,为什么类ReflectPoint值没变。
} //是不改变的是.class文件内的值而.java中值不变。个人对反射那的知识点还不很熟悉,高手帮忙解释下感谢
}
class ReflectPoint {
private String s = "hello";
public String getS() {
return s;
}
public void setS(String s) {
this.s = s;
}
public ReflectPoint(String s) {
super();
this.s = s;
}
public ReflectPoint() {
}
}
复制代码
作者:
Forever。
时间:
2012-7-1 16:24
首先pt1是ReflectPoint的一个对象,而private String s 是ReflectPoint的一个成员变量。他是个成员变量,而不是一个静态变量。也就是说它的改变是随着对象的改变而改变的
如果你new了是个ReflectPoint的对象,而每个对象的s的值都赋值一个新的值,打印出来你会发现有十个结果,因为他只服务于他所属的对象。想要他随时改变,或者值是唯一的,那么给他加一个static关键字就可以搞定了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2