Easy Java
5.22K subscribers
311 photos
51 videos
463 links
Лучшие обучающие материалы и другие полезности для Java-разработчиков.

Сотрудничество: @heywan_n1

Цены: @heywan_media

Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
Download Telegram
🟢 Pattern Matching в Java 21

В Java 21 появилась новая мощная возможность — Pattern Matching for switch. Теперь можно легко проверять и разбирать объекты без каста вручную!

📌 Пример:

public class PatternMatchingExample {
public static void main(String[] args) {
Object obj = "Hello, Java 21!";

switch (obj) {
case String s when s.length() > 10 ->
System.out.println("Строка длинная: " + s);
case String s ->
System.out.println("Короткая строка: " + s);
case Integer i ->
System.out.println("Число: " + i);
default ->
System.out.println("Неизвестный тип");
}
}
}



👍 Разбор:

✔️ switch теперь умеет проверять тип объекта.
✔️ Используется when для дополнительных условий.
✔️ Не нужно вручную кастить obj к String или Integer.

💡 Преимущества:

✔️ Чище и короче код.
✔️ Избегаем instanceof + явного приведения типа.
✔️ Упрощает работу с разными типами данных.

А вы уже пробовали этот функционал?
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5🔥3🤣1
☕️ Аннотации и рефлексия в Java

Аннотации помогают добавлять метаданные к классам, методам и полям, а рефлексия позволяет анализировать и изменять код во время выполнения. Эти инструменты мощные, но могут вызывать проблемы с производительностью и безопасностью.

В статье разбираем, как работают аннотации и рефлексия, где они применяются и с какими подводными камнями можно столкнуться.

🔗 Читайте и наслаждайтесь

➡️ Easy Java | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🤩3😇1
This media is not supported in your browser
VIEW IN TELEGRAM
👩‍💻 Java: что нужно знать новичку?

В этом видеоролике автор подробно объясняет, что такое Java, рассказывает об истории языка, его особенностях и применении. Если хочешь разобраться, зачем нужен этот язык и почему он так популярен, это видео будет полезным.


🔤 Ссылка на источник 🔤

Easy Java |#Видео #Курсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
Какой ответ правильный?
Anonymous Quiz
12%
A
27%
B
19%
C
42%
D
👍4
🎆 ТОП-3 способа создать Singleton в Java

Singleton — это шаблон проектирования, ограничивающий создание экземпляров класса одним объектом. Рассмотрим три разных подхода к его реализации.


1️⃣ Ленивая инициализация (Lazy Initialization)
Создаёт объект только при первом вызове.

public class LazySingleton {
private static LazySingleton instance;

private LazySingleton() {} // Закрытый конструктор

public static LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}

👍 Плюсы: Простота
👍 Минусы: Не потокобезопасен


2️⃣ Потокобезопасный Singleton (Double-Checked Locking)
Оптимизированная версия для многопоточной среды.

public class ThreadSafeSingleton {
private static volatile ThreadSafeSingleton instance;

private ThreadSafeSingleton() {}

public static ThreadSafeSingleton getInstance() {
if (instance == null) {
synchronized (ThreadSafeSingleton.class) {
if (instance == null) {
instance = new ThreadSafeSingleton();
}
}
}
return instance;
}
}


👍 Плюсы: Потокобезопасен, быстрее synchronized-метода
👍 Минусы: Чуть сложнее реализации


3️⃣ Singleton через enum (Лучший способ)
Рекомендуется в современной Java.

public enum EnumSingleton {
INSTANCE;

public void someMethod() {
System.out.println("Enum Singleton!");
}
}


👍 Плюсы: Простота, безопасность от сериализации, ленивый
👍 Минусы: Нет гибкости (нельзя наследовать)


👍 Разбор:

✔️ LazySingleton удобен, но не подходит для многопоточки.
✔️ ThreadSafeSingleton решает проблему двойной проверкой, но сложнее.
✔️ EnumSingletonсамый надёжный способ, рекомендованный Joshua Bloch.

💡 Какой из способов ты используешь?

📍 Теги: #Java #Singleton #Паттерны
Please open Telegram to view this post
VIEW IN TELEGRAM
7
Какой ответ правильный?
Anonymous Quiz
61%
A
21%
B
11%
C
7%
D
👍4
Что это такое?

В Java паттерн Singleton (Одиночка) используется для того, чтобы гарантировать существование только одного экземпляра класса и предоставить к нему глобальную точку доступа. Один из лучших способов реализации паттерна Singleton в современной Java — использовать enum. Это гарантирует, что экземпляр будет создан только один раз, а также позволяет защититься от проблем многозадачности (multi-threading) и сериализации.

Почему это лучший способ?

1. Гарантированная защита от сериализации: Enum типы в Java автоматически обеспечивают защиту от повторной сериализации, что означает, что даже если вы сериализуете и десериализуете объект, он всегда будет одним и тем же экземпляром.

2. Легкость использования: Просто создайте enum с одним элементом, и он будет работать как Singleton.

3. Простота кода: Реализация паттерна через enum гораздо проще и понятнее, чем традиционные способы через класс с приватным конструктором и методами для получения экземпляра.

4. Защита от многопоточности: Enum в Java гарантированно потокобезопасен.

Как использовать Singleton через enum?

Пример кода:
public enum Singleton {
INSTANCE;

// Пример поля
private int value = 42;

// Пример метода
public int getValue() {
return value;
}

public void setValue(int value) {
this.value = value;
}
}


Объяснение:
INSTANCE — это единственный экземпляр вашего класса. Используется стандартный механизм enum для создания этого экземпляра.
Все поля и методы класса могут быть такими же, как в обычном классе.
Для доступа к экземпляру используйте Singleton.INSTANCE

Пример использования:
public class Main {
public static void main(String[] args) {
// Получение доступа к единственному экземпляру
Singleton singleton = Singleton.INSTANCE;

// Использование метода экземпляра
System.out.println(singleton.getValue()); // Выводит 42

// Изменение значения
singleton.setValue(100);
System.out.println(singleton.getValue()); // Выводит 100
}
}


Почему это удобно?

1. Безопасность при многозадачности: В многозадачной среде enum-тип автоматически позаботится о том, чтобы не создать несколько экземпляров.

2. Никаких проблем с рефлексией: При обычной реализации через класс можно создать новые экземпляры с помощью рефлексии, что нарушает принцип Singleton. В случае enum этого не произойдет.

3. Простота тестирования и расширяемости: Такой подход легко тестировать и можно добавлять новые функции без изменения структуры самого паттерна.

Когда использовать?

Использование enum для реализации Singleton рекомендуется, когда вам нужно:

— Обеспечить, чтобы экземпляр был создан только один раз и не был доступен для повторного создания.

— Потребность в потокобезопасности и защите от возможных ошибок сериализации.

— Желание использовать компактное и понятное решение без дополнительных сложностей.


📍 Теги: #Java #Singleton #Паттерны
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍43
Какой ответ правильный?
Anonymous Quiz
32%
A
56%
B
7%
C
5%
D
5
👣 Мини-курс по основам API

Из этого курса вы узнаете, что собой представляет API, как работает и зачем нужен. Рассмотрим примеры использования, способы вызова и тенденции развития.

Курс предназначен для всех, кто хочет понять что такое API и в дальнейшем использовать его в работе.


Вас ожидают: 11 уроков, 10 тестов.


🔤 Пройти курс 🔤

➡️ Easy Java | #Курсы #API
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Media is too big
VIEW IN TELEGRAM
👩‍💻 Почему Java остаётся топовым языком для бизнеса?

В этом видеоролике автор подробно объясняет, зачем Java нужна бизнесу и почему она до сих пор остается одним из ведущих языков программирования.


🔤 Ссылка на источник 🔤

Easy Java |#Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣25
🟢 Частая проблема: Как правильно переопределить equals() и hashCode()?

Многие новички в Java совершают ошибку, забывая, что equals() и hashCode() должны быть согласованы. Это критически важно, если объект используется в HashSet, HashMap и других коллекциях.

🚫 Ошибочный подход :
class User {
private String name;

public User(String name) {
this.name = name;
}

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
User user = (User) obj;
return name.equals(user.name);
}
}


Ошибка: Не переопределён hashCode(). Это вызовет проблемы при использовании объекта в HashSet/HashMap!

✔️ Правильный подход :
import java.util.Objects;

class User {
private String name;

public User(String name) {
this.name = name;
}

@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
User user = (User) obj;
return Objects.equals(name, user.name);
}

@Override
public int hashCode() {
return Objects.hash(name);
}
}

✔️ Теперь объект будет корректно работать в HashSet и HashMap!

👍 Разбор:

✔️ Если переопределяешь equals(), всегда переопредели hashCode()!
✔️ Используй Objects.equals() и Objects.hash() для безопасности.
✔️В коллекциях HashSet и HashMap объекты сравниваются по hashCode() и затем по equals().

А А вы знали об этом?

Если нет поставьте 👍
Если да поставьте
🔥
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍101
✔️ Лучшие практики создания отказоустойчивых систем

Тут объясняют, как серверный код на Python и Java может переживать сбои: повторы, таймауты, graceful degradation и прочие лайфхаки для стабильной жизни.

🔗 Читать статью

➡️ Easy Java | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Какой ответ правильный?
Anonymous Quiz
78%
1
9%
2
7%
3
7%
4
Please open Telegram to view this post
VIEW IN TELEGRAM
😭21👍5