Nếu cần sử dụng Class<T>
như một phần của khóa của Map
cách thích hợp để xác định hashCode
và equals
là gì?
Một Class<T>
thừa hưởng những từ Object
mà kiểm tra cho bình đẳng tham khảo và trả về địa chỉ bộ nhớ như hashcode nhưng trong tâm trí của tôi nó không phải là rõ ràng là những gì định nghĩa ý nghĩa của equals
và hashCode
nghĩa của một Class<T>
.
Tôi có nên sử dụng theClass.getClass().hashCode();
ví dụ (nơi chúng tôi có Class<T> theClass;
) để sử dụng các phương pháp của cá thể thực tế không?
Nhưng điều này dường như không chính xác.
Ví dụ trong javadoc cho Class<T>
:Làm thế nào để xác định một cách có ý nghĩa hashCode và bằng cho một java.lang.Class <T>?
Mỗi mảng cũng thuộc về một lớp học mà được phản ánh như một Class đối tượng được chia sẻ bởi tất cả các mảng với các loại nguyên tố cùng và số kích thước
Vì vậy, có vẻ như trong một số trường hợp cùng một số Class<T>
được chia sẻ giữa các đối tượng? Vì vậy, những gì sẽ là cách để làm theo? Có lẽ sử dụng theClass.hashCode()
và theClass.equals()
để sử dụng bình đẳng tham chiếu? Không chắc chắn ở đây.
Không có gì để xác định, vì hashcode và equals đã được triển khai, và tôi có một thời gian khó tưởng tượng như thế nào và một thời gian khó khăn hơn tưởng tượng lý do tại sao bạn sẽ thay đổi việc thực hiện đó. –
@JensSchauder: Sử dụng Eclipse để tự động tạo 'hashCode' và' equals' nó đưa ra cảnh báo phàn nàn rằng 'hashCode' và' equals' không được định nghĩa cho 'Lớp'. Điều này khiến tôi lo ngại liệu đó có phải là cảnh báo hợp lệ hay không nên làm điều gì đó về nó. – Cratylus
Tôi không biết bạn đang cố gắng làm gì, nhưng 'Lớp' là một lớp học là một phần của java. Bạn không thể thực hiện bất cứ điều gì cho nó. Tên đầy đủ của tệp nguồn nơi bạn cố gắng thêm hashCode và bằng? –