☕️ Лямбды и Функциональные интерфейсы: Как это работает под капотом? Мы все любим лямбды в Java за краткость. Но задумывались ли вы, как строго типизированная Java понимает запись x -> x * 2, не зная типа переменной x? Все дело в Функциональных интерфейсах. Давайте разберем механику, которая превращает "бойлерплейт" в элегантный код. 🧩 Что такое SAM? В основе лежит концепция SAM (Single Abstract Method). Функциональный интерфейс - это интерфейс, у которого есть ровно один абстрактный метод. Лям...
Java Geek
Практичные советы, лайфхаки и код для Java-разработчиков. Каждый пост — реальная польза. Учим Java на примерах. По всем вопросам @evgenycarter
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20🔴 Завтра тестовое собеседование с Java-разработчиком 24 декабря(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать люб...
📌 Декоратор в Java: Как добавить логику без изменения кода? 🔹 Когда использовать? - Когда нужно добавить поведение к объекту динамически. - Когда нельзя или не хочется менять исходный код класса. - Когда необходимо сохранить принцип открытости/закрытости (OCP из SOLID). 🔹 Как это работает? Декоратор — это обёртка вокруг базового объекта. Он реализует тот же интерфейс, но внутри может добавлять новую логику. ✅ Пример использования Допустим, у нас есть базовый интерфейс Notifier, который отправ...
🔴 Завтра тестовое собеседование с Java-разработчиком 21 января(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать любо...
⚔️ Java Battle: List.of() vs Arrays.asList() - в чем разница? На код-ревью часто можно увидеть, как эти два метода используют взаимозаменяемо. На первый взгляд, результат один - список элементов. Но под капотом это два совершенно разных зверя. Давайте разберем, почему замена одного на другой может сломать ваш код. 1. Иллюзия неизменяемости (The Mutability Trap) Это самое важное различие. 🔴List.of() (Java 9+): Создает по-настоящему неизменяемый список. Вы не можете ни добавить, ни удалить, ни из...
🕵️ Java var: Удобный сахар или скрытая угроза? С выходом Java 10 ключевое слово var позволило нам писать меньше кода. var - это Local Variable Type Inference. Это значит, что Java осталась строго типизированным языком, просто теперь компилятор сам догадывается о типе переменной, глядя на то, что находится справа от знака равно (=). Но иногда его догадки могут вас удивить. Вот 3 примера, где var работает неочевидно. 1. Ловушка "Diamond Operator" (<>) Самая частая ошибка новичков. // Без var (Кла...
💿 Java Records: Конец эпохи Lombok? Долгие годы Project Lombok был нашим единственным спасением от бесконечных геттеров, сеттеров, equals() и hashCode(). Но начиная с Java 14 (и официально в Java 16), в языке появилась нативная альтернатива - Records. Многие поспешили удалить Lombok и переписать всё на рекорды. И... столкнулись с проблемами. Давайте разберем, почему record - это не просто "короткий класс". 🏎 Скорость написания Lombok (@Value для неизменяемости): @Value public class User { Stri...
☕️ Java Tips: Инициализация карты в одну строку с Map.of() Помните, как раньше приходилось создавать Map с заранее известными значениями? Куча вызовов .put(), статические блоки или (не дай бог) двойные фигурные скобки. Начиная с Java 9, у нас есть красивый и лаконичный способ - Map.of(). Разберем, как это работает и, главное, чего нельзя делать. 🆚 До и После Как было раньше (The Old Way): Map<String, Integer> map = new HashMap<>(); map.put("One", 1); map.put("Two", 2); map.put("Three", 3); // Р...
🔴 Завтра тестовое собеседование с Java-разработчиком 11 февраля(уже завтра!) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Java-разработчика. Как это будет: 📂 Сергей Чамкин, старший разработчик из Uzum, ex-WildBerries, будет задавать реальные вопросы и задачи разработчику-добровольцу 📂 Cергей будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью 📂 В конце можно будет задать люб...
🔒 Java Sealed Classes: Диктатура в вашей иерархии Раньше в Java у нас было всего два стула для классов: 1. Public: Наследуйся кто хочет (открытый проходной двор). 2. Final: Никто не пройдет (полная изоляция). Но что, если я хочу разрешить наследование только моим классам Circle и Square, но запретить Васе из соседнего отдела создавать свой кривой Triangle? Начиная с Java 17, у нас есть Sealed Classes. 🚧 Как это работает? Вы используете ключевое слово sealed и permits, чтобы явно перечислить, к...