Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
Несколько способов для избежания NullPointerException:

👉 Используйте Optional из пакета java.util.

👉 При сравнении константы с переменной пришедшей из вне, нужно вызывать equals() на константе.

👉 А при сравнении двух переменных используйте java.util.Objects#equals.

👉 Используйте библиотеки с null-безопасностью, например, Apache Commons StringUtils.

👉 Вызывайте методы equals() и equalsIgnoreCase() на известных объектах.

👉 Применяйте valueOf() вместо toString().

👉 Воспользуйтесь аннотациями @NotNull и @Nullable на основе IDE.

👉 При возврате из метода коллекций, не стоит возвращать null, лучше пустую коллекцию (java.util.Collections#emptyList).
🔥24👍11
⌨️ Несколько способов для избежания NullPointerException:

✔️ Используйте Optional из пакета java.util.

✔️ При сравнении константы с переменной пришедшей из вне, нужно вызывать equals() на константе.

✔️ А при сравнении двух переменных используйте java.util.Objects#equals.

✔️ Используйте библиотеки с null-безопасностью, например, Apache Commons StringUtils.

✔️ Вызывайте методы equals() и equalsIgnoreCase() на известных объектах.

✔️ Применяйте valueOf() вместо toString().

✔️ Воспользуйтесь аннотациями @NotNull и @Nullable на основе IDE.

✔️ При возврате из метода коллекций, не стоит возвращать null, лучше пустую коллекцию (java.util.Collections#emptyList).

#java #NullPointerException #Optional
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
⌨️ Зачем нужен equals(). Чем он отличается от операции ==?

Метод equals() - определяет отношение эквивалентности объектов.

При сравнении объектов с помощью == сравнение происходит лишь между ссылками. При сравнении по переопределённому разработчиком equals() - по внутреннему состоянию объектов.

#java #equals
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121🥱1
⌨️ Контракт метода equals()

✔️ Рефлексивность: для любой ссылки на значение x, x.equals(x) вернет true;

✔️ Симметричность: для любых ссылок на значения x и y, x.equals(y) должно вернуть true, тогда и только тогда, когда y.equals(x) возвращает true.

✔️ Транзитивность: для любых ссылок на значения x, y и z, если x.equals(y) и y.equals(z) возвращают true, тогда и x.equals(z) вернёт true;

✔️ Непротиворечивость: для любых ссылок на значения х и у, если несколько раз вызвать х.equals(y), постоянно будет возвращаться значение true либо постоянно будет возвращаться значение false при условии, что никакая информация, используемая при сравнении объектов, не поменялась.

❗️Для любой ненулевой ссылки на значение х выражение х.equals(null) должно возвращать false.

#java #equals #contract
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥51
⌨️ Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode()?

Общий совет: выбирать поля, которые с большой долью вероятности будут различаться. Для этого необходимо использовать уникальные, лучше всего примитивные поля, например, такие как id, uuid. При этом нужно следовать правилу, если поля задействованы при вычислении hashCode(), то они должны быть задействованы и при выполнении equals().

#java #hashCode #equals
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102
⌨️ Несколько способов избежать NullPointerException:

✔️ Используйте класс Optional из пакета java.util для работы с потенциально пустыми значениями.

✔️ При сравнении константы с переменной, полученной извне, вызывайте метод equals() на константе, а не на переменной.

✔️ Для сравнения двух переменных используйте метод java.util.Objects#equals.

✔️ Применяйте библиотеки, обеспечивающие null-безопасность, например, Apache Commons StringUtils.

✔️ Всегда вызывайте методы equals() и equalsIgnoreCase() на объектах, которые гарантированно не равны null.

✔️ Вместо метода toString(), который может вызвать NullPointerException, используйте String.valueOf().

✔️ Используйте аннотации @NotNull и @Nullable, доступные в вашей IDE, для указания допустимости null.

✔️ Возвращайте пустую коллекцию (например, java.util.Collections#emptyList) вместо null при работе с коллекциями в методах.

#java #NullPointerException #Optional
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164🔥1👏1
🔗 В чем разница между == и .equals()?

При сравнении объектов в Java важно понимать различие между == и .equals().

✔️ == сравнивает ссылки на объекты, проверяя, указывают ли они на одну и ту же область памяти.

✔️ .equals() используется для сравнения содержимого объектов, если метод переопределен.

Пример:
String a = new String("Java");
String b = new String("Java");

System.out.println(a == b); // false (разные ссылки)
System.out.println(a.equals(b)); // true (сравнение содержимого)


💡 Совет: для корректного сравнения объектов всегда переопределяйте метод equals() в вашем классе.

#java #equals #comparison
Please open Telegram to view this post
VIEW IN TELEGRAM
👍173
⌨️ Есть ли какие-либо рекомендации о том, какие поля следует использовать при подсчете hashCode()?

Общий совет: выбирать поля, которые с большой долью вероятности будут различаться. Для этого необходимо использовать уникальные, лучше всего примитивные поля, например, такие как id, uuid. При этом нужно следовать правилу, если поля задействованы при вычислении hashCode(), то они должны быть задействованы и при выполнении equals().

#java #hashCode #equals
Please open Telegram to view this post
VIEW IN TELEGRAM
👨‍💻62