2012-05-08 28 views
12

Tôi có một số ArrayList có chứa một số đối tượng từ lớp User. Khi tôi in các đối tượng này tôi nhận:Cách in nội dung đối tượng theo cách chính xác?

[User @ 18fd984, tài khoản @ 18fd984]

Làm thế nào để in các đối tượng trong một cách chính xác?

+0

Điều đó đúng - đầu ra Object toString mặc định. Xác định "đúng" cho usecase của bạn. –

+4

'toString' của đối tượng trả về' getClass(). GetName() + '@' + Integer.toHexString (hashCode()) '. Bạn phải ghi đè phương pháp này cho lớp của bạn theo câu trả lời của Guido García. –

Trả lời

13

Ghi đè phương thức toString trong lớp để tạo ra kết quả bạn muốn, thay vì giá trị mặc định mà Java tự động tạo. Ví dụ:

public class User { 
    private String name; 
    ... 
    @Override 
    public String toString() { 
     return name; 
    } 
} 

Đối với đối tượng phức tạp, Apache Commons Lang cung cấp một số phương pháp tiện dụng, nếu bạn đã sử dụng phụ thuộc này trong dự án của bạn:

@Override 
public String toString() { 
    return ToStringBuilder.reflectionToString(this); 
} 
+0

thankyou, tôi đã tìm kiếm một cái gì đó như thế này – divine

1

Nhìn vào mã nguồn của print(Object obj) phương pháp từ PrintSteam lớp:

public void print(Object obj) 
{ 
    write(String.valueOf(obj)); 
} 

valueOf(Object obj) của String lớp:

public static String valueOf(Object obj) 
{ 
    return (obj == null) ? "null" : obj.toString(); 
} 

Như bạn thấy, obj.toString() được gọi, và như trạng thái @Guido García, ghi đè toString() là phương pháp bạn cần.

Việc thực hiện mặc định của toString() phương pháp trong Object lớp như sau:

public String toString() 
{ 
    return getClass().getName() + "@" + Integer.toHexString(hashCode()); 
} 
0

Có thể đây là quá muộn để trả lời câu hỏi, nhưng tôi đã bị mắc kẹt với cùng một vấn đề, cũng viết một số mã , với một số tính năng bổ sung.

Nếu bạn vẫn đang tìm kiếm giải pháp ở đây là giải pháp chung. Điều này chắc chắn đòi hỏi một số phản ánh nhưng điều này giải quyết mục đích.

A Generic toString() method in java

+0

Điều này chủ yếu là một câu trả lời chỉ liên kết. Ví dụ, bạn có thể cung cấp các yếu tố cần thiết của bài đăng trên blog trong câu trả lời hoặc cho biết phương thức của bạn khác với phương thức 'ToStringBuilder.reflectionToString' được đề cập trong câu trả lời khác như thế nào. – SpaceTrucker

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