Веб-версияОткрыть в Telegram
JJava | Фишки и трюки

Java | Фишки и трюки

@java_tips_and_tricks · канал · Технологии · в индексе с 2026-04-21
6 725подписчиков−21 за неделю
689средний охват поста
10.2%ER — охват к подписчикам
26постов за 30 дней
J
Java | Фишки и трюки
Методы и конструкторы в enum Перечисления (enum) — это классы Java, определяющие наборы констант. Самый простой enum выглядит так: public enum Vehicle { CAR, BUS, BICYCLE, SCOOTER } Но на самом деле, enum в Java обладают гораздо более широким функционалом. Они поддерживают поля, методы, интерфейсы и т.д. Они также Comparable и Serializable и могут имплементировать все методы объекта. Для наглядности давайте создадим enum Animal и присвоим каждому элементу цвет: public enum Animal { DOG("black"), CAT("white"), RAT("gray"); private final String color; Animal(String color){ this.color = color; } public String getColor(){ return color; } } Теперь мы можем выполнить перебор элементов массива с помощью статического метода values(): public class Main { public static void main(String[] args) { for (Animal a : Animal.values()) { System.out.println(a.name() + " - " + a.getColor()); } } } Мы получим следующий результат: DOG - black CAT - white RAT - gray Каждой константе можно присвоить разное поведение при выполнении определенного метода. Например, можно сделать основной метод абстрактным и переопределить его в каждой константе: public enum Operation { PLUS { double evaluate(double x, double y) { return x + y; } }, MINUS { double evaluate(double x, double y) { return x - y; } }, abstract double evaluate(double x, double y); } Всё это обеспечивает удобную работу с перечислениями в Java.
11 · 773 ·
J
Java | Фишки и трюки
⌨️ Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс? В Java абстрактный класс и интерфейс представляют два различных механизма для достижения абстракции и обеспечения множественного наследования. Вот основные различия между ними: 1️⃣ Абстрактный класс (Abstract Class): 👉 Может содержать как абстрактные методы (методы без тела), так и обычные методы с реализацией. 👉 Может иметь переменные экземпляра (поля). 👉 Может содержать конструкторы. 👉 Поддерживает одиночное наследование: подкласс можно наследовать только от одного абстрактного класса. abstract class Animal { String name; abstract void makeSound(); void eat() { System.out.println(name + " is eating."); } } 2️⃣ Интерфейс (Interface): 👉 Содержит только абстрактные методы (в Java 8 и выше может содержать методы с реализацией, помеченные ключевым словом default). 👉 Не может иметь переменных экземпляра, кроме переменных, объявленных как static final. 👉 Не содержит конструкторов. 👉 Поддерживает множественное наследование: класс может реализовывать несколько интерфейсов. interface Animal { void makeSound(); void eat(); } Когда использовать: 👉 Используйте абстрактные классы, когда у вас есть общая реализация для нескольких классов и вы хотите предоставить базовый функционал. 👉 Используйте интерфейсы, когда вам нужна поддержка множественного наследования, или когда классы, возможно, уже наследуют от других классов. Обычно считается хорошей практикой использовать интерфейсы для определения контракта и абстрактные классы для предоставления базовой реализации. В Java 8 и более новых версиях с появлением интерфейсов с методами по умолчанию (default methods), различия стали менее явными, и выбор может зависеть от конкретной ситуации.
13 · 796 ·
J
Java | Фишки и трюки
Метод Arrays.fill() для инициализации массива Класс java.util.Arrays имеет несколько методов с именем fill(), которые принимают разные типы аргументов и заполняют весь массив одним и тем же значением: long array[] = new long[5]; Arrays.fill(array, 30); У метода также есть несколько альтернатив, которые устанавливают диапазон массива в определенное значение: int array[] = new int[5]; Arrays.fill(array, 0, 3, -50); Обратите внимание, что метод принимает массив, индекс первого элемента, индекс последнего элемента (не включительно) и значение.
7 · 1K ·
Java | Фишки и трюки
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Сезон поиска работы только стартанул, а тут такие шишки: СТО, IT-директора и техлиды сами пришли и разместили вакансии. И тут можно даже написать руководителям напрямую: → CTO Альфа-Банка Кирилл Сафаров ищет руководителя портфеля цифровых продуктов на MLM-проект «Свой в Альфе»; → IT-директор Сергей Чернуха из «Филип Моррис Интернэшнл» в России в поиске сразу двух управляющих: IT-решениями для бизнеса и IT-инфраструктурой; → Руководитель направления инженерии и анализа данных в Контуре Юлия Лунёва приглашает продуктового аналитика-сеньора в направление веб-сервисов; → Техлид команды тестирования в Альфа-Банкее Егор Шохин ищет автотестировщика на C# уровня мидл+; → CTO МТС Банка Кирилл Золотарев ищет технического лидера в команду платежей; → Коммерческий директор Skillaz Андрей Синякин опубликовал вакансию директора по продукту
4 · 1K ·
⌨️ Почему char[] предпочтительнее String для хранения пароля? С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке.
8 · 743 ·
J
⌨️ Что такое generics? Generics - это технический термин, обозначающий набор свойств языка позволяющих определять и использовать обобщенные типы и методы. Обобщенные типы или методы отличаются от обычных тем, что имеют типизированные параметры. Примером использования обобщенных типов может служить Java Collection Framework. Так, класс LinkedList<E> - типичный обобщенный тип. Он содержит параметр E, который представляет тип элементов, которые будут храниться в коллекции. Создание объектов обобщенных типов происходит посредством замены параметризированных типов реальными типами данных. Вместо того, чтобы просто использовать LinkedList, ничего не говоря о типе элемента в списке, предлагается использовать точное указание типа LinkedList<String>, LinkedList<Integer> и т.п.
7 · 803 ·
J
Java | Фишки и трюки
⌨️ void и Void В языке программирования Java ключевое слово void используется для указания, что метод не возвращает никакого значения. Метод с возвращаемым типом void выполняет определенные действия, но не производит результат, который можно было бы использовать в вызывающей части программы. Для void еще есть класс обёртка Void. Класс Void — это класс-заполнитель который нельзя создать и который хранит ссылку на объект Class, представляющий ключевое слово Java void. Этот класс можно использовать, например, в случаях, когда у вас есть обобщенный класс и вы хотите, чтобы метод ничего не возвращал (т.е. чтобы пользователь класса не ожидал ничего особенного оттуда получить): interface I<T> { T doStuff(); } class A implements I<Void> { @Override public Void doStuff() { // ничего другого вернуть нельзя return null; } } Или если в проекте регулярно используется Callable<T> для выполнения каких-то асинхронных задач и в тех ситуациях, когда результат работы задачи ничего не должен возвращать, можно реализовать Callable<Void>.
13 · 924 ·
J
Java | Фишки и трюки
⌨️ Где и для чего используется модификатор abstract? Класс, помеченный модификатором abstract, называется абстрактным классом. Такие классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов. Метод, помеченный ключевым словом abstract - абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным. Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.
5 · 1.1K ·
J
Java | Фишки и трюки
⌨️ Можно ли объявить метод абстрактным и статическим одновременно? Нет. В таком случае компилятор выдаст ошибку: "Illegal combination of modifiers: ‘abstract’ and ‘static’". Модификатор abstract говорит, что метод будет реализован в другом классе, а static наоборот указывает, что этот метод будет доступен по имени класса.
6 · 782 ·
J
Java | Фишки и трюки
Фотография
нажмите — покажем
Метод putIfAbsent() интерфейса Map. Если указанный ключ еще не связан со значением (или сопоставлен со значением null), он связывает его с заданным значением и возвращает значение null, в противном случае возвращается текущее значение. default V putIfAbsent(K key, V value) { V v = get(key); if (v == null) { v = put(key, value); } return v; } Параметры: key – ключ, с которым должно быть связано указанное значение. value – значение, которое должно быть связано с указанным ключом. Возврат: предыдущее значение, связанное с указанным ключом, или значение null, если для ключа не было сопоставления. Возврат null может также указывать на то, что мапа ранее ассоциировала с ключом значение null, если реализация поддерживает значения null.
8 · 818 ·
J
Java | Фишки и трюки
Фотография
нажмите — покажем
Метод retainAll() Метод retainAll() интерфейса Collection, удаляет из коллекции все элементы, не содержащиеся в переданной коллекции. По сути оставляет в коллекции только пересекающиеся элементы из двух коллекций. boolean retainAll(Collection<?> c); Параметры: c – коллекция, содержащая элементы, которые следует сохранить в коллекции. Возврат: true, если коллекция изменилась в результате вызова
8 · 555 ·
Java | Фишки и трюки
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
Фотография
нажмите — покажем
⚡️⚡️Строки кода стремятся подешеветь до цены токена. Что остается ценным? Про это — трек «Замысел» 15 октября. Во второй день Joker, посвященный разработке будущего. О том, как человек понимает, почему он называет что-то проблемой, и формулирует свою цель, а не ту, что навязана ему извне. Теперь это общая работа для всех ролей, от разработчика до CEO: шаблонными решениями и готовыми схемами думает модель. В карточках к посту рассказываем, почему так получилось, и показываем доклады из трека: спикеры расскажут, о чем нужно подумать еще до постановки задачи, и чем будет заниматься новый тип инженера — Context Engineer. К дискуссиям после докладов — собираем ваши кейсы. Напишите в комментариях поста, если у вас бывало такое: — агент час работал не над той задачей, потому что задача была сформулирована плохо; — ускорение одного этапа не сдвинуло общий срок; — узким местом оказалась не модель или инфраструктура, а знание, которое никто не записал. Joker 2026 — 14–15 октября, Санкт-Петербург и онлайн. 🌟По промокоду javatipsandtricks персональные билеты дешевле 🔜🔜Исследуйте разработку будущего — на сайте Joker. Реклама. ООО «Джуг Ру Груп». ИНН 7801341446
1 · 443 ·
J
⌨️ Несколько способов для избежания 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).
4 · 366 ·
Java | Фишки и трюки
Фотография
нажмите — покажем
🤺 Почему ты получаешь отказ после «норм собеса»? Дело не в знаниях — ты просто не знаешь, что реально проверяют на собеседованиях. Решение — знать, чего от тебя ждёт интервьюер, и уметь правильно донести свою мысль. Для этого ребята из ШОРТКАТ (менторской программы для разработчиков) собрали в один файл ОТВЕТЫ НА 50 СЛОЖНЫХ ВОПРОСОВ с Java-собеседований 🔥 Они проанализировали более 100 мок-интервью и собрали внутри реальные вопросы + ответы сильного кандидата. ⚠️ Забрать можно бесплатно в боте — @shortcut_sh_bot В том же боте ты сможешь зарегаться на эфир с бесплатным тестовым интервью на Java-разработчика! Эфир пройдёт 7 октября в 19:00 МСК. Его проведёт Виктор Анохин — Senior-разработчик из Wildberries, ex-Билайн. Ты сможешь вживую услышать, какие вопросы задают на собесах в топовых компаниях, и лично задать вопрос ментору из бигтеха 🔝 Всё это бесплатно, тебе нужно только нажать на ссылку и забрать все плюшки ↓ @shortcut_sh_bot Реклама. О рекламодателе.
1 · 207 ·
J
Фотография
нажмите — покажем
Цепочка методов (Method chaining) — это общий синтаксис для нескольких вызовов методов в объектно-ориентированных языках программирования. Каждый метод возвращает объект, что позволяет объединить вызовы в один оператор без необходимости использования переменных для хранения промежуточных результатов. Пример для String: text = text .trim() .replace("?", "") .replace(" ", "-") .toLowerCase(); Для того чтобы сделать такую штуку в своем классе, нужно что бы каждый метод возвращал из метода ссылку на текущий объект (this).
5 · 389 ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем