Применяются ли побочные эффекты toString в отладке Java? - PullRequest
1 голос
/ 31 марта 2011

При отладке java-кода в eclipse, если вы щелкнете по одному из имен переменных, этот объект будет напечатан.Метод toString () объекта используется для его печати.Если какой-то метод toString имеет побочный эффект, и я нажимаю на переменную этого типа, будут ли применены побочные эффекты его toString (и, несомненно, все испортит)?

Ответы [ 3 ]

3 голосов
/ 31 марта 2011

Я думаю, что вы ответили на свой вопрос.Каждый раз, когда вы звоните toString, при отладке или иным образом, все побочные эффекты будут возникать.Именно поэтому вам следует избегать побочных эффектов в toString.

2 голосов
/ 31 марта 2011

JVM не может выбрать «применять» побочные эффекты или нет. Если метод toString () используется для получения строкового представления, его необходимо выполнить, и нет способа не выполнить побочные эффекты. В конце концов, побочные эффекты могут повлиять на способ вычисления строкового представления.

2 голосов
/ 31 марта 2011

Я так себе представляю.Вы можете проверить это, написав метод toString какого-то класса, чтобы он генерировал выходные данные в файл (или делал что-то еще, что можно было бы наблюдать за пределами отладчика), а затем позволял отладчику отображать переменную этого типа.

...