Easy Java
رفتن به کانال در Telegram
Лучшие обучающие материалы и другие полезности для Java-разработчиков. Сотрудничество: @heywan_n1 Цены: @heywan_media Реклама на бирже: https://telega.in/c/+r8kkGSypBY84MmIy
نمایش بیشتر5 033
مشترکین
-624 ساعت
-237 روز
-7830 روز
آرشیو پست ها
5 033
Что это такое?
В 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 #Паттерны5 033
+4
⚡️ Linux теперь в Telegram!
Ребята сделали крутейший канал про Linux, где на простых картинках и понятном языке обучают работе с этой ОС, делятся полезными фишками и инструментами
Подписывайтесь: @linuxos_tg
5 033
🔍 Google — В С Ё ?
В 2024 году невозможно найти что-то полезное, просто загуглив: выдача поиска забита мусором из ChatGPT, а все годные материалы не попадают в топы поиска.
Хорошо, что есть База Знаний — сеть каналов, в которой команда опытных айтишников постит лучшее из мира IT. Для вашего удобства всё отсортировано по категориям:
🖥 Python: @python_baza
👩💻 Frontend: @frontend_baza
👩💻 Backend: @backend_baza
📊 SQL: @sql_baza
🎨 Веб-дизайн: @design_baza
📖 Книги по IT: @books_baza
🕔 Ссылки будут активны ещё 48 часов, успейте сохранить себе, чтобы не потерять
5 033
Через пол года 90% кода будет генерироваться AI
Какую только дичь не пишут про разработку. Информации и каналов много, но в большинстве случаев это либо бесполезные новости, либо душные пересказы статьей и документации. Каждый второй сейчас продает какие-то курсы или учит как быстро войти в профессию.
Довольно мало реальных спецов, которые действительно долго работают в IT и что-то в этом соображают. Чтобы знать, как они выглядят, почитайте канал Dev Easy Note.
Его автор Никита – разработчик с большим опытом и широким кругозором, освещает очень разные темы: графы на собесах, история про внедрение LLM для CI, про версионирование.
Если вам нравится контент с иллюстрациями и кринжовыми шутками, подписывайтесь: @dev_easy_notes
Реклама. Зальцман Н. ИНН 701753602630.
5 033
🎆 ТОП-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 #Паттерны5 033
⚡ Новые каналы с вакансиями и стажировками для джунов
В этих каналах публикуются все свежие вакансии и стажировки
🔺 ВАКАНСИИ
Горячие вакансии с привлекательными офферами для джуниор разработчиков, аналитиков, дизайнеров и QA-специалистов.👉 ПОДПИСАТЬСЯ 🔺СТАЖИРОВКИ
Стажировки для начинающих специалистов в IT независимо от возраста!👉 ПОДПИСАТЬСЯ 🔺IT interns
Свежие стажировки для junior специалистов в топовых компании России и мира👉 ПОДПИСАТЬСЯ 🔺Junojobs
Вакансии и стажировки для junior-разработчиков на удалёнке.👉 ПОДПИСАТЬСЯ 🔺БИГТЕХ
Junior вакансии и стажировки в крупнейших IT-компаниях мира: NVidia, Apple, T-банк, Яндекс, Google и т. д.👉 ПОДПИСАТЬСЯ 🔺Макс из < codereview />
Эксперименты про трудоустройство в IT, советы для быстрого поиска работы и офферы для джунов.👉 ПОДПИСАТЬСЯ
5 033
Каждый день без изучения ИИ — это упущенная возможность
Пока другие осваивают нейросети и зарабатывают на этом, вы тратите время впустую.
Канал «That's IT» — проводник в мире технологий, интернет-культуры, трендов и нейросетей.
Здесь вы найдете:
— Ежедневные дайджесты главных новостей ИИ.
— Эксклюзивные инсайты о разработках и технологиях
— Айтишный юмор и немного милых котиков
Подписывайтесь и читайте самое важное из мира искуственного интеллекта: @thats_it_ai_tech
5 033
👩💻 Java: что нужно знать новичку?
В этом видеоролике автор подробно объясняет, что такое Java, рассказывает об истории языка, его особенностях и применении. Если хочешь разобраться, зачем нужен этот язык и почему он так популярен, это видео будет полезным.🔤 Ссылка на источник 🔤 ➡ Easy Java |#Видео #Курсы
5 033
«Вместо философии учил Java, вместо доты — Python. Через 3 месяца нашёл работу с зп 90к»
Думаете, повезло?
Уверен, что так сможет каждый — потому что эти языки востребованы (70% программ и сервисов работают на них) и просты в усвоении (за 3 месяца можно выйти на достойный уровень без напряга).
А вот и каналы, где нашёл всю инфу. Её грамотно собрали, даже сложные темы изучаются легко:
Java (теория)
Java (практика)
Python
Уже через месяц сможете писать простеньких ботов для телеги и продавать по 5-7к, кайф же 🥰
5 033
☕️ Аннотации и рефлексия в Java
Аннотации помогают добавлять метаданные к классам, методам и полям, а рефлексия позволяет анализировать и изменять код во время выполнения. Эти инструменты мощные, но могут вызывать проблемы с производительностью и безопасностью.
В статье разбираем, как работают аннотации и рефлексия, где они применяются и с какими подводными камнями можно столкнуться.
🔗 Читайте и наслаждайтесь
➡️ Easy Java | #статья
5 033
🟢 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 + явного приведения типа.
✔️ Упрощает работу с разными типами данных.
❓ А вы уже пробовали этот функционал?