JAVA_GEEK Telegram 361
🧪 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



tgoop.com/java_geek/361
Create:
Last Update:

🧪 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

BY Java Geek


Share with your friend now:
tgoop.com/java_geek/361

View MORE
Open in Telegram


Telegram News

Date: |

According to media reports, the privacy watchdog was considering “blacklisting” some online platforms that have repeatedly posted doxxing information, with sources saying most messages were shared on Telegram. Hashtags are a fast way to find the correct information on social media. To put your content out there, be sure to add hashtags to each post. We have two intelligent tips to give you: The Channel name and bio must be no more than 255 characters long ‘Ban’ on Telegram SUCK Channel Telegram
from us


Telegram Java Geek
FROM American