Способность заменить даже вещами как удаление файла, файл, открывающийся и т.д. - непосредственное управление библиотекой языка. Это - огромное преимущество когда тестирование. Вы не должны обертывать все в сложные контейнеры. Просто замените функцией/методом и пойдите. Это также называют исправление обезьяны.
Некоторые общие идеи, которые не обязательно относятся к equals ()
Как написать метод равенства на Java - это чрезвычайно подробная и хорошо написанная статья, в которой объясняются распространенные ошибки при написании метода равенства и способы их избежать.
Я думаю, вы уже поняли ключевую часть этого, потому что вы сказали:
... когда они окажутся необходимыми.
Помните общие правила оптимизации:
Я слышал их в классе много лет назад, и насколько я могу судить, C2 является источником.
Вы можете взять реплику из интернирования строк .
Если ваши объекты неизменяемы, вы можете реализовать свое собственное «интернирование», используя статический заводской метод и заполнение уникальные экземпляры в хеш-таблицу. Если вы сделаете это, то при равенстве ссылок объекты будут равны.
Посмотрите книгу под названием «Эффективная Java» Джошуа Блоха. Там есть несколько замечательных советов и целый раздел по этому вопросу. Гудлак!
Если ваши объекты в среде, где вы полностью контролируете, что вызывает на них equals ()
, тогда вам следует отслеживать, какие сравнения вы выполняете, и настраивать свой метод equals ()
соответственно.
Я предлагаю увеличить размер HashMap, если equals () дорого (например, за счет уменьшения коэффициента загрузки). Таким образом у вас будет меньше коллизий, и, надеюсь, if (o == this) return true будет соответствовать наиболее часто.