返回信息流public void setSlotNum(ArrayList slotNum){//dxm 5.13
System.out.println("111111111111111111");
ArrayList oldValue =this.slotNum;
System.out.println("oldValue"+oldValue);
System.out.println("22222222222222222222");
this.slotNum=slotNum;
System.out.println("33333333333333333333");
if (oldValue!=this.slotNum ) {
System.out.println("444444444444444444");
this.firePropertyChange("slotNum", oldValue,
slotNum);
System.out.println("5555555555555555");
}
System.out.println("cccccccccccc");
System.out.println("*1**slotNum="+slotNum);
System.out.println("ddddddddddddd");
}
为什么运行出来是这个样子啊
111111111111111111
oldValuenull
22222222222222222222
33333333333333333333
444444444444444444
111111111111111111
oldValue[320, 320, 320, 320]
22222222222222222222
33333333333333333333
cccccccccccc
*1**slotNum=[320, 320, 320, 320]
ddddddddddddd
5555555555555555
cccccccccccc
*1**slotNum=[320, 320, 320, 320]
ddddddddddddd
急求大神指点
这是一条镜像帖。来源:北邮人论坛 / java / #22422同步于 2012/5/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
菜鸟求助~~
sophia2046
2012/5/14镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
为什么会有循环啊~~从
5555555555555555
cccccccccccc
*1**slotNum=[320, 320, 320, 320]
不明白为什么会再次跳到if里面打印~~
【 在 zhihao 的大作中提到: 】
: “以管窥豹”,难下定论,不作任何评论。最好还是将上下文代码完整贴出来。
这个代码相互调用,太长了啊,您可不可以帮我解释下这个firePropertyChange的过程啊,因为打印出来和想象出的不一样啊
cccccccccccc
*1**slotNum=[320, 320, 320, 320]
ddddddddddddd
lz你自己想当然吧,我觉得这段代码是在firePropertyChange里头打出来得,然后再执行System.out.println("5555555555555555"); 跳出if 区块,程序流继续执行下面的语句
System.out.println("cccccccccccc");
System.out.println("*1**slotNum="+slotNum);
System.out.println("ddddddddddddd");
并不存在你说的奇怪的执行流的问题,否则5555555555555555 会多打印一次才对,另外最好设断点调试,跟踪程序流一眼就看出了吧,这样子System.out实在是无法忍受
谢谢ls,这个问题解决了啊,是这样的的,firePropertyChange一起使用的有PropertyChangeListener监听,属性变化,只要新旧属性不同,就触发事件重复执行,直至新旧属性一致,在接着firePropertyChange的继续执行,所以会打印两次,嗯,谢谢您~~
【 在 zhihao 的大作中提到: 】
: cccccccccccc
: *1**slotNum=[320, 320, 320, 320]
: ddddddddddddd
: ...................
【 在 sophia2046 的大作中提到: 】
: 谢谢ls,这个问题解决了啊,是这样的的,firePropertyChange一起使用的有PropertyChangeListener监听,属性变化,只要新旧属性不同,就触发事件重复执行,直至新旧属性一致,在接着firePropertyChange的继续执行,所以会打印两次,嗯,谢谢您~~
嗯,所以还是要从上下文看程序