2008年7月17日星期四

一个诡异的BitSet错误

开发环境:GRAILS1.0.3,JAVA6U2。
故障现象:有两个BitSet,做与操作无论如何得不到期望的结果。为了进一步验证,写下了如下代码:
....
BitSet b = new BitSet();
b.set(1)
b.and(new BitSet())
println b

结果为{1}

BitSet实例化后,每一个元素默认取值为false,因此做与操作时返回结果无论如何不会有任何结果。但是显然这段代码所做的与操作失败了,没有改变目标的任何值。百思不解,google未果,决定看看源代码,也没看出毛病来。一气之下决定把源代码文件放在项目文件中并改名为MyBitSet,代码调用这个“新”的类,以便我可以自由地加上日志查看运行结果。结果运行一切正常。仍然不知所以然,却搭进去一个下午,点儿背。

1 条评论:

Li Ruibo 说...

archlinux, java build 1.6.0_07-b06

未能重现