2011-01-06 33 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