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).

#java #NullPointerException #Optional
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16
⌨️ Несколько способов избежать 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
⌨️ Optional это полезная фишка языка, которая помогает работать с возможными null значениями, избегая проблем с NullPointerException.

Optional оборачивает значение, которое может быть либо пустым, либо присутствующим, и предоставляет методы для работы с этим значением безопасным способом.

Пример использования:

Optional<String> name = Optional.ofNullable(getUserName());
name.ifPresent(n -> System.out.println("Имя пользователя: " + n));


Если значение есть, оно выводится на экран. Если значение null, программа просто пропустит это место, и не возникнет исключения. Также можно задать значение по умолчанию:

String defaultName = name.orElse("Гость");
System.out.println(defaultName);


Это делает код более устойчивым к ошибкам и улучшает его читаемость.

#java #Optional
Please open Telegram to view this post
VIEW IN TELEGRAM
👍123
⌨️ Метод Optional.or()

Метод Optional.or() используется для того, чтобы вернуть значение текущего Optional, если оно присутствует, или вернуть другой Optional, если текущее значение отсутствует. Это удобно, когда нужно подставить запасной вариант, если значение отсутствует (т.е. Optional пуст).

Сигнатура метода:

Optional<T> or(Supplier<? extends Optional<? extends T>> supplier)


Если Optional содержит значение, or() вернет текущий Optional. Если Optional пуст, он выполнит supplier.get() и вернет результат этого вызова, т.е. другой Optional.

Пример:

import java.util.Optional;

public class OptionalOrExample {
public static void main(String[] args) {
Optional<String> optionalValue = Optional.of("Hello");

// Если optionalValue пуст, вернем запасное значение
String result = optionalValue
.or(() -> Optional.of("Default Value"))
.get();

System.out.println(result); // Выведет "Hello", так как optionalValue не пуст
}
}


Если заменить Optional.of("Hello") на Optional.empty(), тогда or() вернет запасное значение "Default Value".

#java #Optional #or
Please open Telegram to view this post
VIEW IN TELEGRAM
👎62🤝1
⌨️ Optional.orElse() и Optional.orElseGet()

Optional.orElseGet() — это метод, который позволяет задать значение по умолчанию, вызывая поставщик (Supplier) только тогда, когда Optional пуст.

Если значение присутствует, возвращается оно.
Если значение отсутствует, вызывается Supplier, который возвращает значение по умолчанию.

📌 Пример:

import java.util.Optional;

public class OptionalOrElseGetExample {
public static void main(String[] args) {
String defaultValue = "Default Value";

// Пример с orElse
System.out.println("Using orElse:");
System.out.println(getValue().orElse(expensiveOperation(defaultValue)));

// Пример с orElseGet
System.out.println("Using orElseGet:");
System.out.println(getValue().orElseGet(() -> expensiveOperation(defaultValue)));
}

private static Optional<String> getValue() {
return Optional.empty(); // Эмулируем пустой Optional
}

private static String expensiveOperation(String input) {
System.out.println("Executing expensive operation...");
return input;
}
}


🔗 Ключевая разница между orElse и orElseGet:
✔️orElse() всегда вычисляет значение по умолчанию, даже если оно не нужно.
✔️orElseGet() вызывает логику только при необходимости, что экономит ресурсы.

💡 Совет:
Используйте orElseGet, если значение по умолчанию требует сложных вычислений или вызовов. Это сделает ваш код эффективнее.

#Java #Optional #orElse #orElseGet
Please open Telegram to view this post
VIEW IN TELEGRAM
👍71🔥1👏1
🤔 Что такое Optional и как его использовать?

Optional — это контейнер, который помогает избежать NullPointerException, упрощая работу с отсутствующими значениями. Появился в Java 8.

📌 Основные методы:

1️⃣ Optional.of(value) — создаёт Optional с непустым значением.
2️⃣ Optional.empty() — создаёт пустой Optional.
3️⃣ Optional.ofNullable(value) — создаёт Optional, который может быть пустым, если value == null.
4️⃣ isPresent() / ifPresent() — проверяет, есть ли значение, или выполняет действие.

Пример:
Optional<String> optionalName = Optional.ofNullable(null);

optionalName.ifPresent(name -> System.out.println(name));
System.out.println(optionalName.orElse("Default Name")); // Default Name


💡 Совет: Используйте Optional вместо null для более чистого и безопасного кода.

#java #optional #nullsafe
Please open Telegram to view this post
VIEW IN TELEGRAM
👍141