2013-04-04 37 views
7

Có cách nào tôi có thể sao chép đối tượng vào một tệp trong khi gỡ lỗi để tôi có thể sử dụng nó sau này để thử nghiệm không? Tôi đang sử dụng java trên nhật thực. Cụ thể là tôi đã từ chối sao chép đối tượng yêu cầu để tạo ra các junitsđối tượng sao chép từ trình gỡ lỗi nhật thực

+0

Hãy xem: http://stackoverflow.com/questions/15407944/copying-the-objects-while-debugging –

+0

Bạn có thể sao chép đối tượng dưới dạng chuỗi trong nhật thực, chúng là đầu ra của phương thức toString(). – BlackJoker

+0

@ Shreyos Adikari Tôi không nghĩ rằng tôi có thể sử dụng cách tiếp cận trong câu hỏi đó cho một đối tượng yêu cầu – RegisteredUser

Trả lời

6

Nếu lớp của đối tượng (hoặc bất kỳ siêu lớp nào của nó) triển khai giao diện java.io.Cho phép, bạn có thể dễ dàng sắp xếp lại đối tượng này và lưu nó vào một tệp. Hãy nói rằng bạn có một đối tượng:

MyClass myObj = new MyClass(); 

Chỉ cần mở 'Display' view trong Eclipse (Window -> Chế độ hiển thị -> Khác ... -> Debug/Display) và gõ:

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

Chọn mã này và nhấn Ctrl + i - Eclipse sẽ thực thi mã, vì vậy myObj sẽ được lưu trữ trong tệp (trong trường hợp này là "/ path/to/your/file"). Sử dụng tên chuẩn của các lớp từ gói java.io trong chế độ xem Hiển thị, vì gói này có thể không được nhập trong lớp whisky hiện đang được thực thi.

Sau đó, bạn có thể khôi phục đối tượng này (ví dụ, trong một lớp học thử nghiệm):

import java.io.*; 

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

Tất nhiên, bạn nên bọc này trong thông thường try/catch/finally công cụ để tránh rò rỉ resorce.

Thật không may, điều này sẽ không hoạt động nếu MyClass không triển khai giao diện java.io.Serializable.

+2

yeah myclass không thể tuần tự hóa – RegisteredUser

Các vấn đề liên quan