2014-09-19 144 views
0

我們都知道如何實現toString()方法。它可能是我們打印對象數據的一些自定義實現和不同模式。從toString表示生成Java對象

使用生成的toString,我們可以重新創建對象嗎?我不是在這裏談論Serialization

讓我來解釋一個場景,您可能會有一個應用程序在生產環境中運行愉快,當您收到一些請求並執行某些操作時,您的日誌會打印這些對象。而一些問題可能已經提出。

要複製某些硬件錯誤,您將返回到您的單元測試用例/ mockito以重新創建類似數據的問題。

現在,如果我可以重現對象從它的ToString表示, 因爲它的所有依賴對象也實現了的toString,我會 能夠最清楚這些情況。

是否有任何默認設置插件/工具要做同樣的事情?如果不是,這可能是我的下一個試穿項目:)

+0

有*沒有*一般的方法來做到這一點。也就是說,「toString」與某些語言中的「toRepr」不同。如果* custom * objects實現了「toString」,以便它實現「序列化」語義,那麼假設可以執行這樣的映射(即,相關數據是「串行化」在字符串中)。 – user2864740 2014-09-19 05:37:52

+0

由於這個問題被標記爲重複我已經發布了原始問題的答案[這裏](http:// stackoverflow。COM /問題/ 2596230 /轉換回從 - 的toString到對象/ 25928621#25928621) – 2014-09-19 07:31:36

回答

0

沒有,沒有一般的方式

(考慮到返回empty string一個toString方法的情況下)

最好的辦法是登錄詳情在一個異常的情況下,可能在更精細的log level

1

的toString()方法被設計爲返回一個對象,而不是一個完整的表示的可讀表示。

如果你想把你的對象編組爲一個字符串,以後可以解組,那麼通常的選項就是XML,JSON,平面文件等等......查看JAXB也許。

您可以選擇自定義格式,唯一的要求是您需要重建對象的所有信息都在此處,然後您編寫自定義分析器以再次構建對象。如果所述自定義格式也恰好可讀,則可以將其插入toString()。

0

不,你不能。

toString()僅用於loggingdebug的目的。它不適用於序列化state of an Object

如果有問題的物體支持serialization,請使用serialization and deserialization以瞭解如何執行此操作。