2011-01-06 34 views
3

我可以使用Eclipse - Expressions工具比較2個對象,試圖調試一個Java程序。我能做的最大的是,將這兩個對象添加到表達式並手動擴展要比較的對象,我希望有如選擇2對象(同類 - 當然,類),並說「比較」和Eclipse解析對象和突出顯示所有的差異..在運行時比較eclipse中的2個對象(調試時)?

PS:我不懶惰做手動,它只是我對付的對象是非常複雜的,就像它有10個層次或對象的陣列列表:)

+0

爲什麼不在代碼中添加日誌語句。 – Falmarri

+0

你應該[接受一些答案](http://stackoverflow.com/faq#howtoask)你的問題。 – dkarp

回答

3

不是一個很好的解決方案,但它在過去對我來說很好,在你的類路徑中包含像gson或其他json解析器。然後查看顯示屏類型:

new Gson().gson.toJson(yourObject1) 

new Gson().gson.toJson(yourObject2) 

然後使用JSON輸出中保存到文件,並使用文件比較工具。 Longwinded但它與複雜的對象往往是值得的。

0

在調試類別下查找「顯示」視圖。它在Java調試透視圖中默認不打開。在調試會話期間,您將能夠執行非常任意的Java語句。

+0

感謝提示,但我仍然想知道如何在Display中直觀地比較2個對象? –

+0

與java代碼中的相同方式...說「x.equals(y)」,選擇並在視圖中點擊執行按鈕。有兩個執行按鈕。一個將執行該陳述並打印結果。另一個只是執行它。 –

+0

嗯...如果x和y是一個複雜類的對象,說Employee,它有listManagers,listVehicles,mapSubordinates,mapRole,listInventoryCheckouts,strJoinDates。現在我想直觀地比較x和y中的每個項目,並找出它們之間的區別:) –

1

它們可以像您希望的那樣簡單或簡單。 如果兩個對象相同,在Display視圖中使用等號表達式可能會提示您,但如果它們不同,它將不會告訴您這些差異是什麼。 考慮使用Eclipse細節格式化程序。他們很棒。

Eclipse的Inspect視圖通常可能會散佈不必要的數據,這些數據只會混淆您的想法以及您真正感興趣的內容。您決定顯示的輸出是您使用詳細格式化程序的選擇。

請參閱下面的鏈接,瞭解如何使用它們。

http://www.howardism.org/Technical/Eclipse/Eclipse_Detail_Formatter.html