2013-04-04 58 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