从eclipse调试器复制对象

Reg*_*ser 8 java eclipse

有没有办法在调试时将对象复制到文件中,以便以后可以使用它进行测试?我在eclipse上使用java.具体而言,我匆匆复制请求对象以进行仲裁

Grz*_*ski 7

如果对象的类(或其任何超类)实现接口java.io.Serilizable,则可以轻松地序列化此对象并将其存储在文件中.假设你有一个对象:

MyClass myObj = new MyClass();
Run Code Online (Sandbox Code Playgroud)

只需打开Eclipse中的"显示"视图(窗口 - >显示视图 - >其他... - >调试/显示)并键入:

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

选择此代码并按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();
Run Code Online (Sandbox Code Playgroud)

当然,您应该将它包装在通常的try/catch/finally内容中,以避免重新泄漏.

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

  • 是的myclass不可序列化 (3认同)