Tôi có câu hỏi về cách ghi đè phương thức equals
trong Java. Trong cuốn sách của tôi, tôi có ví dụ sau:Truyền bằng phương thức equals
public class Dog{
private String name;
private int age;
public boolean equals(Object obj) {
if(!(obj instanceof Dog)) return false;
Dog other = (Dog) obj; ---> confused here
if(this.name.equals(other.name) && (this.age == other.age) {
return true;
}
else {
return false;
}
}
}
Tôi không hiểu tại sao tại sao phải bỏ tham chiếu đến Dog
tham khảo. Nếu tham chiếu đó không thuộc loại Dog
, chúng tôi trả về false. Tại sao tất cả các rắc rối với đúc nó?
Đừng quên obj == null. Và không liên quan đến câu hỏi của bạn nhưng bạn chỉ có thể trả về this.name.equals (other.name) && (this.age == other.age) – ssedano
Vì Equals này chỉ chấp nhận một tham số và đây là ghi đè lên lớp Dog điều này bằng mong đợi đối tượng của loại Dog. nếu bạn vượt qua một loại đối tượng sau đó sẽ luôn luôn trả về false này là một phần của chương trình cực đoan đó là để đảm bảo tránh bất kỳ lỗi thời gian chạy dự kiến. –
Sẽ đơn giản hơn để trả lời câu hỏi này nếu bạn có thể đề xuất cách bạn sẽ * thích * để viết mã mà không có dàn diễn viên, lưu ý rằng kiểu biên dịch 'obj' là' Đối tượng'. –