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?
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?
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);
}
thankyou, tôi đã tìm kiếm một cái gì đó như thế này – divine
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));
}
và 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());
}
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.
Đ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
Điều đó đúng - đầu ra Object toString mặc định. Xác định "đúng" cho usecase của bạn. –
'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. –