【发布时间】:2011-07-26 13:18:17
【问题描述】:
在 Eclipse 中调试 java 代码时,如果单击其中一个变量名,该对象就会被打印出来。对象的 toString() 方法用于打印它。如果某个 toString 方法有副作用,并且我点击了该类型的变量,它的 toString 的副作用是否会被应用(并且毫无疑问会搞砸一切)?
【问题讨论】:
标签: java eclipse debugging tostring side-effects
在 Eclipse 中调试 java 代码时,如果单击其中一个变量名,该对象就会被打印出来。对象的 toString() 方法用于打印它。如果某个 toString 方法有副作用,并且我点击了该类型的变量,它的 toString 的副作用是否会被应用(并且毫无疑问会搞砸一切)?
【问题讨论】:
标签: java eclipse debugging tostring side-effects
我想你回答了你自己的问题。任何时候你打电话给toString,在调试或其他情况下,所有的副作用都会发生。这正是您应该避免在 toString 中产生副作用的原因。
【讨论】:
我想是的。您可以通过编写某个类的 toString 方法来测试这一点,以便它生成到文件的输出(或执行在调试器之外可观察到的其他操作),然后让调试器显示该类型的变量。
【讨论】:
JVM 不能选择是否“应用”副作用。如果使用 toString() 方法来获取字符串表示,则必须执行它,并且没有办法不执行副作用。毕竟,副作用可能会影响字符串表示的计算方式。
【讨论】: