TGViewer
Java Geek Java Geek @java_geek · 2.37K subscribers
Post #361 988
🧪 Java: тестируем equals() и hashCode() правильно

Сегодня хочу поделиться небольшой, но важной практикой для всех, кто пишет Java-код: проверка корректной реализации equals() и hashCode().

Когда ты переопределяешь эти методы (например, в Entity или DTO), важно убедиться, что они соответствуют контракту и не подводят в коллекциях. Иначе можно словить баг, который очень трудно отследить.

🧰 Как это протестировать:

Используем библиотеку EqualsVerifier — она делает всю грязную работу за нас:


import nl.jqno.equalsverifier.EqualsVerifier;

public class PersonTest {
@Test
void equalsContract() {
EqualsVerifier.forClass(Person.class).verify();
}
}


📌 Почему это важно:
- Set, Map, List.contains() и другие структуры полагаются на корректную реализацию этих методов.
- EqualsVerifier проверит: симметрию, транзитивность, согласованность, null и многое другое.
- Он даже предупредит, если ты не добавил final или если поле не включено в сравнение.

🧠 Советы:
- Не пиши equals() вручную — используй Objects.equals() и Objects.hash().
- Если используешь Lombok, просто добавь @EqualsAndHashCode.

Пиши в комментах, сталкивался ли ты с багами из-за equals()`/`hashCode()? Как ты их находил?

👉 @java_geek
  • 👍 6
More from @java_geek
  1. Sep 24, 2026Что такое стек-трейс? Стек-трейс (stack trace) представляет собой список вызовов методов в…
  2. Sep 17, 2026Как перебрать элементы LinkedList в обратном порядке, не используя медленный get(index)? Д…
  3. Sep 15, 2026Array vs ArrayList Выбор между Array (стандартным Java-массивом) и ArrayList зависит от сп…
  4. Sep 11, 2026Какова цель ключевого слова final, когда оно используется с переменной? Ключевое слово fin…
  5. Sep 9, 2026☕ Java Tip: Как работает var в Java С версии Java 10 появился ключевое слово var. Оно упро…
  6. Sep 7, 2026Что такое перегрузка методов в Java? Перегрузка методов — это мощный приём, который позвол…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →