这真的很奇怪,我已经使用名为S.Buffer
的私有字段定义了一个类consumed
:
public static class Buffer implements Output, Appendable, CharSequence {
/**
* The value is used for character storage.
*/
private char[] value;
/**
* The count is the number of characters used.
*/
private int count;
/**
* track if {@link #toString()} method is called
*/
private boolean consumed;
...
}
还有一个名为reset
的方法:
public Buffer reset() {
this.setLength(0);
this.consumed = false;
return this;
}
如上所示,我希望在调用consumed
后false
字段值为reset()
,但是情况并非如此,并且可以通过以下屏幕截图显示intellij IDEA:
知道这里出了什么问题吗?
更新
这在进入单元测试期间发生,并且单元测试失败,这意味着值 NOT 设置。但是,如果我直接运行单元测试,它将通过。
我尝试过很多其他的事情,例如使用int
或AtomicBoolean
替换布尔值,所有类似的结果。
答案 0 :(得分:1)
您的toString()
应该是幂等的,而不是更改对象的状态。毕竟,它用于调试目的。 IDE使用对象的.toString()
在调试器中显示它。您可以设置状态,然后在调试器向您显示时更改状态。