从toString表示生成Java对象

我们都知道如何实现toString ()方法。 它可能是稍微自定义的实现和不同的模式我们如何打印对象数据。

使用生成的toString ,我们可以重新创建对象吗? 我不是在谈论Serialization

让我解释一个场景,你可能有一个应用程序在生产中愉快地运行,当你收到一些请求并做一些操作时,你的日志打印这些对象。 并且可能会提出一些问题。

要复制某些硬错误,您将返回到unit testing用例/ mockito,以使用类似数据重新创建问题。

现在如果我可以从它的toString表示重现对象,因为它的所有依赖对象也实现toString,我将能够清除大多数这些场景。

是否有默认的插件/工具来做同样的事情? 如果没有,它可能是我的下一个试穿项目:)

toString()方法旨在返回对象的可读表示,而不是完整表示。

如果你想把你的对象编组成一个稍后可以解组的字符串,通常的选项是XML,JSON,平面文件……也许可以查看JAXB。

您可以选择自定义格式,唯一的要求是重建对象所需的所有信息都在那里,并且您编写自定义解析器以再次构建对象。 如果所述自定义格式也恰好可读,则可以将其插入toString()。

不,没有一般方法

(考虑一个返回空字符串的toString方法的情况)

最好的办法是在exception的情况下记录更多细节,可能是在更精细的日志级别

你不能。

toString()仅用于loggingdebug目的。 它不用于序列化state of an Objectstate of an Object

如果有问题的对象支持serialization那么请使用serialization and deserialization来了解如何执行此操作。