2013-04-04 57 views
7

有没有一种方法可以在调试时将对象复制到文件,以便稍后可以使用它进行测试?我在eclipse上使用java。 具体而言,我减去复制请求对象以制作联合体从eclipse调试器复制对象

+0

请看看:http://stackoverflow.com/questions/15407944/copying-the-objects-while-debugging – 2013-04-04 14:24:50

+0

您可以在eclipse中将对象作为字符串复制,它们是toString()方法的输出。 – BlackJoker 2013-04-04 14:28:50

+0

@ Shreyos Adikari我不认为我可以在请求对象中使用该问题的方法 – RegisteredUser 2013-04-04 14:31:28

回答

6

如果对象的类(或其任何超类)实现了接口java.io.Serilizable,那么可以轻松地序列化此对象并将其存储在文件中。比方说,你有一个目标:在Eclipse

MyClass myObj = new MyClass(); 

只需打开 '显示' 视图(窗口 - >显示视图 - >其他... - >调试/显示器)类型:

java.io.ObjectOutputStream oos = new java.io.ObjectOutputStream(new java.io.FileOutputStream("/path/to/your/file")); 
oos.writeObject(myObj); 
oos.close(); 

选择此代码并按下Ctrl + i - Eclipse将执行代码,因此myObj将存储在文件中(在本例中为“/ path/to/your/file”)。在Display视图中使用来自java.io包的类的规范名称,因为此包可能无法在类当前正在执行的类中导入。

后来,你可以恢复这个对象(比如说,在一个测试类):

import java.io.*; 

ObjectInputStream ois = new ObjectInputStream(new FileInputStream("/path/to/your/file")); 
MyClass myObj = (MyClass) ois.readObject(); 
ois.close(); 

当然,你应该把这个包在通常的try/catch /最后的东西,以避免resorce泄漏。

不幸的是,如果MyClass没有实现java.io.Serializable接口,这将不起作用。

+2

耶myclass不可序列化 – RegisteredUser 2013-04-04 19:21:28