🔥Пожалуй самый распространенный способ избежания Null Pointer Exception в вашем приложении.
Часто можно получить
Решение это всегда менять местами переменную и константу. То есть вызвать метод equals у константы.
Часто можно получить
NPE при проверке на равенство переменной и константы. Дело в том, что переменная может содержать null и при вызове метода equals у такой переменной, мы получим исключение NullPointerException. Решение это всегда менять местами переменную и константу. То есть вызвать метод equals у константы.
👍16❤3
6.png
53.8 KB
🚀 Stream API появился в Java 8 и существенно упростил работу с коллекциями. Теперь можно писать короче и красивее фильтрацию, сортировку и обработку данных.
В карусели приведены полезные примеры использования стримов.
В карусели приведены полезные примеры использования стримов.
🔥8☃2👍1
🚩 Double braces инициализация - это создание и инициализация объекта в одном java выражении. Чаще всего используется с коллекциями.
На самом деле в этот момент происходит создание анонимного внутреннего класса, расширяющего ArrayList и определение в нём блока инициализации экземпляра.
Плюсы: код выглядит проще, красивее и понятнее.
Минусы:
📍 малоизвестный способ инициализации
📍 каждый раз создается дополнительный класс
📍 не работает, если класс, который мы пытаемся расширить, помечен как final
📍 содержит скрытую ссылку на внешний экземпляр, что может привести к утечкам памяти
Именно из за этих минусов данная инициализация является антипаттерном.
В современных версиях java есть более красивые и правильные варианты создания и инициализации коллекций.
Начиная с Java 8 это Stream API, а начиная с java 9 конструкция List.of().
На самом деле в этот момент происходит создание анонимного внутреннего класса, расширяющего ArrayList и определение в нём блока инициализации экземпляра.
Плюсы: код выглядит проще, красивее и понятнее.
Минусы:
📍 малоизвестный способ инициализации
📍 каждый раз создается дополнительный класс
📍 не работает, если класс, который мы пытаемся расширить, помечен как final
📍 содержит скрытую ссылку на внешний экземпляр, что может привести к утечкам памяти
Именно из за этих минусов данная инициализация является антипаттерном.
В современных версиях java есть более красивые и правильные варианты создания и инициализации коллекций.
Начиная с Java 8 это Stream API, а начиная с java 9 конструкция List.of().
👍6❤2
Sentry for Java — это программный инструмент, призванный помочь разработчикам отслеживать и управлять ошибками, исключениями и сбоями в приложениях Java.
Sentry интегрируется с вашими Java-приложениями, позволяя фиксировать и сообщать об ошибках и исключениях в режиме реального времени. Он предоставляет подробную информацию о контексте, в котором произошли ошибки, включая трассировки стека, информацию о пользователе и данные об окружении. Это помогает разработчикам быстро выявлять и устранять проблемы, повышая общую надежность и удобство использования своих приложений.
Ошибки которые не обрабатываются, Sentry соберёт автоматически, а те которые вы обработали, можно отправить вручную:
Подключение: добавить зависимость sentry-spring-boot-starter и прописать в конфиге sentry.dsn
Sentry интегрируется с вашими Java-приложениями, позволяя фиксировать и сообщать об ошибках и исключениях в режиме реального времени. Он предоставляет подробную информацию о контексте, в котором произошли ошибки, включая трассировки стека, информацию о пользователе и данные об окружении. Это помогает разработчикам быстро выявлять и устранять проблемы, повышая общую надежность и удобство использования своих приложений.
Ошибки которые не обрабатываются, Sentry соберёт автоматически, а те которые вы обработали, можно отправить вручную:
} catch (Exception e) {
Sentry.addBreadcrumb("readFile");
Sentry.captureException(e);
}Подключение: добавить зависимость sentry-spring-boot-starter и прописать в конфиге sentry.dsn
🥰4👍2
📝 Запись (record) — это класс, объявленный с ключевым словом
Класс, который компилятор создает для вас при создании записи, является окончательным (
Этот класс расширяет класс
Запись, как и класс, может реализовывать любое количество интерфейсов.
Блок, который следует сразу за именем записи, —
Компилятор сам создаёт конструктор со всеми перечисленными компонентами записи, а так же реализует методы
record появился в Java 16.
record вместо ключевого слова class. Запись служит контейнером неизменяемых данных и предназначена для лаконичного описания DTO (Data Transfer Object).Класс, который компилятор создает для вас при создании записи, является окончательным (
final).Этот класс расширяет класс
java.lang.Record. Таким образом, ваша запись не может расширять какой-либо класс.Запись, как и класс, может реализовывать любое количество интерфейсов.
Блок, который следует сразу за именем записи, —
(int x, int y) объявляет компоненты записи. Для каждого компонента записи компилятор создает private final поле и метод доступа к нему с тем же именем, что и у этого компонента. В записи может быть объявлено любое количество компонентов.Компилятор сам создаёт конструктор со всеми перечисленными компонентами записи, а так же реализует методы
toString(), equals() и hashCode() с реализацией по умолчанию.record появился в Java 16.
🔥3