1

在 Eclipse 中调试 java 代码时,如果单击其中一个变量名称,则会打印该对象。对象的 toString() 方法用于打印它。如果某个 toString 方法有副作用并且我单击该类型的变量,它的 toString 的副作用是否会被应用(并且毫无疑问会搞砸一切)?

4

3 回答 3

3

我想你回答了你自己的问题。任何时候调用toString,在调试或其他情况下,都会发生所有副作用。这正是您应该避免在 toString 中产生副作用的原因。

于 2011-03-31T01:52:46.187 回答
2

我想是的。您可以通过编写某个类的 toString 方法来测试它,以便它生成到文件的输出(或执行在调试器之外可观察到的其他操作),然后让调试器显示该类型的变量。

于 2011-03-31T01:52:35.483 回答
2

JVM 不能选择是否“应用”副作用。如果使用 toString() 方法来获取字符串表示,则必须执行它,并且没有办法不执行副作用。毕竟,副作用可能会影响字符串表示的计算方式。

于 2011-03-31T07:01:52.493 回答