Предположим, что у меня есть класс , который имеет поле private final int age
и метод public Dog ageBy(Time time)
, который возвращает новый экземпляр собаки каждый раз при вызове. A Dog
класс не просто неизменен, но не имеет никаких методов, чтобы вернуть его возраст, другими словами договор собаки не позволяет ему сказать свой возраст (почему? Потому что нет разговорных собак), он может только «лаять» «спать» и делать другие вещи собаки.Как реализовать равные без полей экспонирования?
Но Dog
можно сравнить с другими собаками по возрасту. Для этого мне нужно переопределить метод public equals(Object o)
в классе Dog
. Но проблема в том, что нет способа сравнить это, потому что я не могу получить доступ к прошедшему возрасту собак.
Вопрос: Как реализовать метод equals без отображения каких-либо полей объекта?
Все экземпляры 'Dog' имеют доступ к' private' полей других 'экземпляров Dog'. – resueman
Спасибо, я не знал этого :) –