2009-09-07 35 views
53

Tôi muốn sao chép sâu một Danh sách. cho rằng chúng tôi đang có một phương phápLàm thế nào để sắp xếp một danh sách trong java?

// apache commons method. This object should be serializable 
SerializationUtils.clone (object) 

vì vậy bây giờ để sao chép Danh sách của tôi, tôi nên chuyển đổi sang serializable trước. Có thể chuyển đổi một List thành danh sách Serializable không?

Trả lời

126

Tất cả triển khai chuẩn của java.util.List đã triển khai java.io.Serializable.

Vì vậy, mặc dù java.util.List bản thân không phải là một subtype của java.io.Serializable, nó phải là an toàn để đúc danh sách để Serializable, miễn là bạn biết đó là một trong những triển khai tiêu chuẩn như ArrayList hoặc LinkedList.

Nếu bạn không chắc chắn, sau đó sao chép danh sách đầu tiên (sử dụng một cái gì đó như new ArrayList(myList)), sau đó bạn biết nó có thể tuần tự hóa.

+0

Tại sao mọi người lại muốn truyền mọi thứ đến Serializable? Serializable chỉ là một giao diện đánh dấu; việc truyền một thứ gì đó tới Serializable không hữu ích. – Jesper

+17

Vì 'SerializationUtils.clone()' yêu cầu một đối số trên kiểu 'Serializable', và vì vậy nếu biến của bạn thuộc kiểu' List', bạn sẽ cần phải nhập nó. – skaffman

+2

@ Jesper: Đó là một giao diện đánh dấu cho biết nó an toàn để sắp xếp từng lớp. Android sử dụng giao diện Serializable cho nhiều thứ; chuyển qua các mục đích bổ sung, tùy chọn được chia sẻ, v.v. –

7

Danh sách chỉ là một giao diện. Câu hỏi đặt ra là: Danh sách thực thi có thể tuần tự hóa được không? Nói về tiêu chuẩn Danh sách triển khai (ArrayList, LinkedList) từ thời gian chạy Java, hầu hết trong số chúng thực sự đã có.

24

Như đã chỉ ra, hầu hết các triển khai chuẩn của List đều có thể được tuần tự hóa. Tuy nhiên, bạn phải đảm bảo rằng các đối tượng được tham chiếu/chứa trong danh sách là cũng có thể được nối tiếp.

+1

Đã bỏ phiếu tại sao? –

+1

Như đã chỉ ra, 'Danh sách' là một giao diện không mở rộng' Serializable' hoặc bất kỳ giao diện nào làm như vậy. 'List's không được serializable có thể không phổ biến trong các thư viện chuẩn, nhưng điều đó không làm cho câu đầu tiên đúng. –

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