Câu hỏi này liên quan cụ thể đến việc ghi đè phương thức equals() cho các đối tượng có số lượng trường lớn. Trước tiên, hãy để tôi nói rằng đối tượng lớn này không thể chia nhỏ thành nhiều thành phần mà không vi phạm nguyên tắc OO, vì vậy hãy nói với tôi rằng "không có lớp nào có nhiều hơn x trường" sẽ không giúp được gì.Java bằng(): để phản ánh hoặc không phản ánh
Tiếp tục, sự cố đã thành hiện thực khi tôi quên kiểm tra một trong các trường cho sự bình đẳng. Vì vậy, phương pháp equals của tôi là không chính xác. Sau đó, tôi nghĩ sử dụng sự phản chiếu:
--code removed because it was too distracting--
Mục đích của bài đăng này không nhất thiết phải tái cấu trúc mã (nhưng không phải mã tôi đang sử dụng), nhưng thay vào đó hãy nhập liệu có hay không là một ý tưởng tốt.
Ưu điểm:
- Nếu một lĩnh vực mới được thêm vào, nó sẽ tự động bao gồm
- Phương pháp này là nhiều hơn nữa ngắn gọn hơn 30 nếu phát biểu
Nhược điểm:
- Nếu một trường mới được thêm vào, trường này sẽ tự động được bao gồm, đôi khi điều này là không mong muốn
- Hiệu suất: Điều này phải chậm hơn, tôi không cảm thấy cần phải phá vỡ sơ lược
- Tìm kiếm các trường nhất định để bỏ qua trong so sánh là một chút xấu xí
Bất kỳ suy nghĩ nào?
Tất cả các trường là chuỗi hoặc nguyên thủy @ P.S. Đã làm điều đó, nhưng nó không làm tổn thương để nhắc nhở mọi người! @ P.P.S. Tôi biết phải có thứ gì đó ở ngoài kia. Tôi đã sử dụng ToStringBuilder, tôi không có ý tưởng làm thế nào tôi bỏ qua những người. Câu hỏi thực sự là phản ánh hoặc không phản ánh. – oreoshake
Tùy thuộc vào những gì bạn cho là có khả năng: thêm trường và quên thêm trường bằng() hoặc thêm trường bạn không muốn và/hoặc không thể sử dụng trong so sánh tự động, mặc dù sử dụng chú thích có thể trợ giúp . Bạn có thể xem xét một cái gì đó như flexjson và so sánh đầu ra của từng đối tượng. –
Những người xây dựng này khá thú vị. –