ar
Feedback
Java Portal | Программирование

Java Portal | Программирование

الذهاب إلى القناة على Telegram

Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

إظهار المزيد

📈 نظرة تحليلية على قناة تيليجرام Java Portal | Программирование

تُعد قناة Java Portal | Программирование (@java_iibrary) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 12 045 مشتركاً، محتلاً المرتبة 10 395 في فئة التكنولوجيات والتطبيقات والمرتبة 54 327 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 12 045 مشتركاً.

بحسب آخر البيانات بتاريخ 27 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار -142، وفي آخر 24 ساعة بمقدار -8، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 11.53‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 6.43‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 388 مشاهدة. وخلال اليوم الأول يجمع عادةً 774 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 5.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل boot, string, void, архитектура, resttemplate.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика Связь: @devmangx РКН: https://clck.ru/3H4WUg

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 28 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

12 045
المشتركون
-824 ساعات
-137 أيام
-14230 أيام

جاري تحميل البيانات...

جذب المشتركين
يونيو '26
يونيو '26
+30
في 5 قنوات
مايو '26
+28
في 0 قنوات
Get PRO
أبريل '26
+34
في 1 قنوات
Get PRO
مارس '26
+112
في 1 قنوات
Get PRO
فبراير '26
+90
في 0 قنوات
Get PRO
يناير '26
+74
في 1 قنوات
Get PRO
ديسمبر '25
+232
في 9 قنوات
Get PRO
نوفمبر '25
+1 004
في 327 قنوات
Get PRO
أكتوبر '25
+48
في 0 قنوات
Get PRO
سبتمبر '25
+36
في 0 قنوات
Get PRO
أغسطس '25
+81
في 1 قنوات
Get PRO
يوليو '25
+1 479
في 268 قنوات
Get PRO
يونيو '25
+479
في 1 قنوات
Get PRO
مايو '25
+305
في 3 قنوات
Get PRO
أبريل '25
+696
في 1 قنوات
Get PRO
مارس '25
+876
في 2 قنوات
Get PRO
فبراير '25
+797
في 1 قنوات
Get PRO
يناير '25
+1 263
في 2 قنوات
Get PRO
ديسمبر '24
+1 596
في 400 قنوات
Get PRO
نوفمبر '24
+728
في 171 قنوات
Get PRO
أكتوبر '24
+1 285
في 287 قنوات
Get PRO
سبتمبر '24
+1 183
في 283 قنوات
Get PRO
أغسطس '24
+2 821
في 235 قنوات
Get PRO
يوليو '24
+32
في 1 قنوات
Get PRO
يونيو '24
+28
في 1 قنوات
Get PRO
مايو '24
+18
في 0 قنوات
Get PRO
أبريل '24
+20
في 2 قنوات
Get PRO
مارس '24
+27
في 2 قنوات
Get PRO
فبراير '24
+35
في 3 قنوات
Get PRO
يناير '24
+24
في 0 قنوات
Get PRO
ديسمبر '23
+24
في 1 قنوات
Get PRO
نوفمبر '23
+36
في 2 قنوات
Get PRO
أكتوبر '23
+30
في 2 قنوات
Get PRO
سبتمبر '23
+28
في 0 قنوات
Get PRO
أغسطس '23
+33
في 0 قنوات
Get PRO
يوليو '23
+49
في 0 قنوات
Get PRO
يونيو '23
+42
في 0 قنوات
Get PRO
مايو '23
+35
في 0 قنوات
Get PRO
أبريل '23
+32
في 0 قنوات
Get PRO
مارس '23
+37
في 0 قنوات
Get PRO
فبراير '23
+62
في 0 قنوات
Get PRO
يناير '23
+73
في 0 قنوات
Get PRO
ديسمبر '22
+70
في 0 قنوات
Get PRO
نوفمبر '22
+83
في 0 قنوات
Get PRO
أكتوبر '22
+79
في 0 قنوات
Get PRO
سبتمبر '22
+58
في 0 قنوات
Get PRO
أغسطس '22
+106
في 0 قنوات
Get PRO
يوليو '22
+142
في 0 قنوات
Get PRO
يونيو '22
+216
في 0 قنوات
Get PRO
مايو '22
+144
في 0 قنوات
Get PRO
أبريل '22
+150
في 0 قنوات
Get PRO
مارس '22
+499
في 0 قنوات
Get PRO
فبراير '22
+174
في 0 قنوات
Get PRO
يناير '22
+325
في 0 قنوات
التاريخ
نمو المشتركين
الإشارات
القنوات
28 يونيو+3
27 يونيو0
26 يونيو+2
25 يونيو+1
24 يونيو+5
23 يونيو0
22 يونيو+2
21 يونيو+3
20 يونيو+1
19 يونيو0
18 يونيو+1
17 يونيو0
16 يونيو0
15 يونيو0
14 يونيو0
13 يونيو0
12 يونيو0
11 يونيو0
10 يونيو0
09 يونيو0
08 يونيو0
07 يونيو+4
06 يونيو0
05 يونيو+2
04 يونيو0
03 يونيو+2
02 يونيو+3
01 يونيو+1
منشورات القناة
Redis может быть самым большим предательством в истории open source. В 2009 итальянский разработчик по имени Salvatore Sanfil
+1
Redis может быть самым большим предательством в истории open source. В 2009 итальянский разработчик по имени Salvatore Sanfilippo работал над стартапом, а MySQL был слишком медленным. Тогда он в свободное время сделал собственную in-memory базу данных и выложил её в open source бесплатно. Он назвал её Redis. Twitter использовал его. GitHub использовал его. Snapchat использовал его. Stack Overflow использовал его. Каждая крупная технологическая компания в мире запускала Redis где-то в своём стеке. К 2020 году Salvatore выгорел после 11 лет поддержки проекта в одиночку. Он передал проект Redis Labs и ушёл. В марте 2024 Redis Labs изменили лицензию. За ночь Redis перестал быть open source. Облачные провайдеры больше не могли предлагать его как managed service без оплаты Redis Labs. Сообщество, которое выросло вокруг кода Salvatore, проснулось и оказалось заблокированным. Они не спорили. Они не писали посты. Они форкнули проект. Через восемь дней Linux Foundation объявил Valkey. Поддержка от AWS, Google, Oracle, Ericsson и Snap. Более 50 компаний присоединились за несколько недель. В течение года Fedora, Ubuntu, Debian и Arch полностью отказались от Redis и сделали Valkey стандартом. AWS перенёс миллионы узлов на Valkey. Valkey достиг 1.19 миллиона запросов в секунду. На 230% быстрее версии Redis, которую прекратили развивать. Потом Redis вернул Salvatore, чтобы попытаться вернуть сообщество. Он вернулся. Он выступил на Hacker News, защищая изменение лицензии. Он пытался восстановить доверие. Сообщество уже двинулось дальше без него. Redis построил 15 лет доверия в open source. Проверил его один раз. Потерял за 8 дней. В open source сообщество — это не просто пользователи. Сообщество — это ров. 👉 Java Portal

2
Kafka в event-driven архитектурах: 5 ключевых паттернов Большинство разработчиков знают Kafka как систему обмена сообщениями,
Kafka в event-driven архитектурах: 5 ключевых паттернов Большинство разработчиков знают Kafka как систему обмена сообщениями, но мало кто действительно понимает, как использовать всю её мощь в event-driven архитектурах. Kafka — это не просто продюсирование и потребление сообщений. Это основа масштабируемых, отказоустойчивых и реально-временных систем, используемых крупнейшими компаниями мира. Вот 5 ключевых паттернов Kafka, которые должен знать каждый инженер: 1. Централизованное управление логами — стримьте логи из нескольких приложений в Kafka для долгосрочного хранения и анализа. 2. Распределение данных в реальном времени — публикуйте данные для множества потребителей эффективно через pub/sub архитектуру Kafka. 3. Бесшовная репликация логов — обеспечивайте консистентность в распределённых системах через репликацию и воспроизведение изменений логов. 4. Многоступенчатая обработка событий — обрабатывайте потоки событий в несколько этапов для обнаружения паттернов и аналитики в реальном времени. 5. Продвинутая автоматизация workflow через события — автоматизируйте процессы, обнаруживая и анализируя паттерны событий в реальном времени. Освоение этих паттернов поможет проектировать масштабируемые event-driven архитектуры для реальных приложений. Сохраните этот пост для будущего. Поделитесь с теми, кто готовится к system design интервью или работает с event-driven системами. 👉 Java Portal
573
3
20 законов разработки, которые должен знать каждый инженер 1. Закон Галла: Работающая сложная система вырастает из работающей
20 законов разработки, которые должен знать каждый инженер 1. Закон Галла: Работающая сложная система вырастает из работающей простой. 2. KISS: Делай проще. Всё остальное — оверхеад. 3. Закон Конвея: Компании проектируют системы, которые повторяют структуру их коммуникаций. 4. Закон Хайрума: У достаточно большого API уже неважно, что ты обещал в контракте. Кто-нибудь уже зависит от каждого observable-поведения твоей системы. 5. CAP-теорема: Выбери два: консистентность, доступность, устойчивость к разделению. 6. Закон Завински: Любая программа разрастается до тех пор, пока не научится читать почту. 7. Закон Брукса: Добавление людей в опаздывающий проект делает его ещё более поздним. 8. Эффект Рингельмана: Производительность каждого участника группы падает с ростом группы. 9. Закон Прайса: Половину работы делают квадратный корень от всех людей. 10. Эффект Даннинга — Крюгера: Новички переоценивают свои способности, эксперты — недооценивают. 11. Закон Хофштадтера: Всё занимает больше времени, чем ты планируешь, даже с учётом этого закона. 12. Закон Паркинсона: Работа расширяется, чтобы заполнить всё отведённое на неё время. 13. Закон Гудхарта: Когда метрика становится целью, она перестаёт быть хорошей метрикой. 14. Закон Гилба: Измерять неточно лучше, чем не измерять вообще. 15. Принцип Кнута: Забудь о микрооптимизациях в 97% случаев. Преждевременная оптимизация — корень всех зол. 16. Закон Амдала: Ускорение одной части системы ограничено долей времени, которое эта часть реально используется. 17. Закон Мёрфи: Если что-то может пойти не так, оно пойдёт не так. 18. Закон Постела: Будь консервативен в том, что отправляешь, и либерален в том, что принимаешь. 19. Закон Стерджена: 90% всего на свете — фигня. 20. Закон Каннингема: Лучший способ получить правильный ответ в интернете — не задать вопрос, а написать неправильный ответ. 👉 Java Portal
743
4
Исторический момент. Новый HTTP-метод в стандарте. QUERY. Альтернатива GET и POST. Как GET — не меняет состояние ресурса. Как
Исторический момент. Новый HTTP-метод в стандарте. QUERY. Альтернатива GET и POST. Как GET — не меняет состояние ресурса. Как POST — можно использовать тело запроса. Шлёшь JSON, кешируешь ответ. Только что повышен до Proposed Standard. 👉 Java Portal
846
5
Java: Начиная с Java 8, отдавайте предпочтение java.time вместо Date и Calendar. API из java.time неизменяемые (immutable), п
Java: Начиная с Java 8, отдавайте предпочтение java.time вместо Date и Calendar. API из java.time неизменяемые (immutable), потокобезопасные (thread-safe) и намного понятнее в использовании. Преимущества: LocalDate.of(2026, 5, 31) — май действительно означает май. Нет изменяемых объектов, которые легко случайно испортить. Форматтеры из DateTimeFormatter потокобезопасны. Удобная работа с часовыми поясами через ZonedDateTime. Более читаемый и предсказуемый код. Вместо: Date Calendar SimpleDateFormat Используйте: LocalDate LocalDateTime ZonedDateTime Instant DateTimeFormatter Код становится проще, а количество ошибок с датами и временем заметно уменьшается. 👉 Java Portal
927
6
Твой Java-проект в Claude Code не должен каждый раз стартовать с пустого промпта. claude-code-java — это готовая рабочая обла
Твой Java-проект в Claude Code не должен каждый раз стартовать с пустого промпта. claude-code-java — это готовая рабочая область для Java-разработчиков. Внутри навыки, шаблоны, MCP-конфиг и скрипты для настройки. Всё, что нужно для типичной Java-работы. Он делает Claude Code одинаково полезным в любом проекте. Подсовывает структурированные markdown-скиллы для код-ревью, тестов, коммитов, архитектурных решений и работы с Maven. Что внутри: - 18 навыков для Java: код-ревью, архитектура, Spring Boot, JPA, Maven, безопасность, логирование - Быстрый старт через setup-project.sh — создаёт .claude/, привязывает навыки, генерирует CLAUDE.md - Можно брать по одному навыку, выборочно или сразу всё - В комплекте шаблоны CLAUDE.md, MCP-конфиг, настройки - README подсказывает, как подключить те же навыки к автоматическому PR-ревью Открытый исходный код под MIT. 👉 Java Portal
937
7
Горутины и виртуальные треды. Слева Go с горутинами, справа Java с виртуальными потоками. Оба создают миллион задач. Забавно+1
Горутины и виртуальные треды. Слева Go с горутинами, справа Java с виртуальными потоками. Оба создают миллион задач. Забавно наблюдать, как одни и те же люди твердят, что язык справа медленный и многословный, а язык слева бесконечно лучше. А на деле оба справляются с одним и тем же объёмом. Просто каждый по-своему. 👉 Java Portal
940
8
Что нового в PostgreSQL 19? PostgreSQL 19 продолжает одну важную тенденцию. Postgres превращается во что-то гораздо большее, чем просто реляционная база. Самые интересные новинки: Графовые запросы через SQL/PGQ PostgreSQL 19 научился выполнять SQL Property Graph Queries. Теперь можно запрашивать связи прямо на SQL, без отдельной графовой базы. Пригодится для соцсетей, рекомендаций, поиска мошенничества и графов зависимостей. GROUP BY ALL Вместо того чтобы перечислять все колонки в GROUP BY, пишешь GROUP BY ALL. Postgres сам группирует по неагрегатным колонкам. Меньше шаблонного кода, меньше ошибок. WAIT FOR LSN Фича для приложений, которые используют реплики чтения. Позволяет подождать, пока реплика догонит основную базу, прежде чем читать данные. Полезно для консистентности «прочитал то, что написал». Лучшая поддержка JSON Postgres и дальше улучшает работу с полуструктурированными данными, не теряя при этом SQL, индексы, соединения и транзакции. PostgreSQL 19 пока в бете. Детали могут поменяться к релизу. Но направление понятно. Postgres потихоньку становится одной платформой под всё: реляционные данные, документы, графы, аналитика и векторы для AI. 👉 Java Portal
1 008
9
AI-инструменты можно любить и ненавидеть, но работать без них в IT уже практически невозможно 🤩 Коллеги из AvitoTech 11 июля
AI-инструменты можно любить и ненавидеть, но работать без них в IT уже практически невозможно 🤩 Коллеги из AvitoTech 11 июля зовут в их офис на Лесной на AI Hardcore Day. Приглашают тех, кто каждый день сталкивается с AI в работе и даже пишет своих AI-агентов. Обещают доклады и нетворкинг-сессию на террасе после — и всё это без записи. 💫 Среди тем: — Spec-Driven Development: теория, инструменты, практика. — Разработка и тестирование MCP для внутренних агентных систем аналитики. — Выпрямляем руки агентов: как сделать MCP удобными и действительно полезными. — Атаки на GenAI-агентов: OWASP на практике. ➡ Регистрация тут!
906
10
Java Tip: Не перегружайте методы параметрами Если метод принимает слишком много аргументов, возрастает риск передать значения
Java Tip: Не перегружайте методы параметрами Если метод принимает слишком много аргументов, возрастает риск передать значения в неправильном порядке, а код становится сложнее читать и поддерживать. ❌ Плохо: createUser(firstName, lastName, street, city, zip, country); ✅ Лучше сгруппировать связанные данные в отдельный объект: createUser(firstName, lastName, new Address(street, city, zip, country)); Такой подход: • делает сигнатуры методов компактнее • упрощает расширение модели данных • снижает вероятность ошибок при вызове • делает код более понятным и самодокументируемым Если несколько параметров всегда используются вместе — вероятно, им нужен собственный класс или record. #Java #Refactoring #CleanCode 👉 Java Portal
968
11
Docker-ошибка, которую я вижу почти в каждом junior Dockerfile: COPY . . RUN npm install должно быть: COPY package*.json ./ R
Docker-ошибка, которую я вижу почти в каждом junior Dockerfile: COPY . . RUN npm install должно быть: COPY package*.json ./ RUN npm install COPY . . почему это важно? docker кэширует каждую инструкцию как отдельный слой исходный код меняется с каждым коммитом поэтому COPY . . ломает кэш, и всё после него (включая npm install) пересобирается с нуля при каждой сборке если поменять порядок, слой с установкой зависимостей остаётся в кэше даже при изменении кода, потому что он зависит только от package.json одна перестановка строк. экономит 40+ секунд на каждой пересборке. кэшируй зависимости, а не код. 👉 Java Portal
1 034
12
Spring Boot 4.1 приносит с собой много новых фич, включая автоконфигурацию job repository для Spring Batch на базе MongoDB. \ Читай об этом здесь 👉 Java Portal !
1 077
13
💡 Java tip: Use the Stream API для работы с коллекциями в декларативном стиле. List names = users.stream() .filter(U
💡 Java tip: Use the Stream API для работы с коллекциями в декларативном стиле. List<String> names = users.stream() .filter(User::isActive) .map(User::getName) .sorted() .toList(); Пиши, что тебе нужно получить из данных. Не расписывай цикл вручную. Stream сделает это короче и чище. 👉 Java Portal
1 170
14
Как создаются продукты, которыми пользуются миллионы? Покажут на «Сезоне кода» в Казани — летнем ИТ-фесте, где объединяют раз
Как создаются продукты, которыми пользуются миллионы? Покажут на «Сезоне кода» в Казани — летнем ИТ-фесте, где объединяют разработку, аналитику и продукт в одном пространстве. В программе: — прикладные доклады команд Т-Банка и других компаний; — демо-зоны с продуктами и платформами: можно посмотреть, как все работает изнутри и пообщаться с разработчиками; — новая секция «Продуктовая кухня»: поговорим о развитии продуктов через инсайты, data-driven-подход и продуманный дизайн. И конечно, живое общение, интерактивы и афтепати с диджеем в конце дня. Количество мест ограничено — успейте зарегистрироваться
1 215
15
SQLBolt - изучайте SQL с помощью простых интерактивных упражнений. https://sqlbolt.com/ 👉 Java Portal
1 181
16
Java-паттерны: Builder Паттерн Builder помогает создавать сложные объекты более гибким и понятным способом. На примере выше х
Java-паттерны: Builder Паттерн Builder помогает создавать сложные объекты более гибким и понятным способом. На примере выше хорошо видно проблему длинных конструкторов: new Order("Mario", "Laptop", 2, true, "Leave at door"); Через несколько месяцев уже сложно понять, что означает true, а при добавлении новых параметров конструктор быстро становится неудобным. Builder решает эту проблему: Order order = Order.builder() .customer("Mario") .product("Laptop") .quantity(2) .express(true) .note("Leave at door") .build(); Преимущества: ✅ Именованные параметры делают код читаемее ✅ Можно задавать значения в любом порядке ✅ Удобно работать с необязательными полями ✅ Значения по умолчанию задаются в Builder ✅ Валидацию можно выполнять один раз в build() ✅ Нет путаницы с конструкторами из 5–10 аргументов Builder особенно полезен для DTO, конфигураций, запросов к API и объектов с большим количеством параметров. Поэтому его часто можно встретить в Java-проектах и библиотеках вроде Lombok, где достаточно добавить аннотацию @Builder. 👉 Java Portal
1 374
17
Spring Boot 4.1 добавляет всего одно свойство: spring.datasource.connection-fetch=lazy По умолчанию методы с @Transactional получают соединение с БД сразу при открытии транзакции, даже если запрос в итоге так и не выполняется. Попадание в кэш, ранний return, долгий вызов внешнего API перед сохранением данных — во всех этих случаях соединение просто простаивает без дела. Режим lazy откладывает получение соединения до момента, когда действительно выполняется SQL-запрос. Dan Vega собрал демо, которое показывает это на метриках HikariCP. Количество захватов соединений (acquire count) падает примерно со 100 до почти 0. 👉 Java Portal
1 219
18
Java: отдавай предпочтение неизменяемым объектам (immutable), чтобы упростить потокобезопасность. ❌ Изменяемое состояние, раз
Java: отдавай предпочтение неизменяемым объектам (immutable), чтобы упростить потокобезопасность. ❌ Изменяемое состояние, разделяемое между потоками public class Balance { private BigDecimal amount = BigDecimal.ZERO; public void deposit(BigDecimal v) { amount = amount.add(v); } public BigDecimal get() { return amount; } } Если два потока одновременно вызовут deposit(), возможны потерянные обновления (lost updates), гонки данных (race conditions) и чтение неконсистентного состояния. ✅ Неизменяемый объект — обновление через создание нового экземпляра public record Balance(BigDecimal amount) { public Balance deposit(BigDecimal v) { return new Balance(amount.add(v)); } } Вместо изменения существующего объекта создаётся новый. Потоки могут безопасно работать со своими снимками состояния (snapshot), а каждый вызов deposit() возвращает новый объект. ✅ Неизменяемые коллекции List<String> roles = List.of("READ", "WRITE"); Map<String, Integer> limits = Map.of("free", 10, "pro", 100); Такие коллекции можно безопасно передавать между потоками без дополнительной синхронизации. ✅ Защитная копия (defensive copy) Если исходная коллекция всё ещё изменяемая: List<String> snapshot = List.copyOf(mutableRoles); Создай неизменяемую копию перед публикацией другим частям приложения. На практике immutable-подход позволяет существенно сократить количество synchronized, блокировок и ошибок многопоточности. Поэтому современные API Java (record, List.of(), Map.of(), Optional, LocalDateTime) активно используют неизменяемые объекты по умолчанию. 👉 Java Portal
1 042
19
🔥VPS + ISPmanager со скидкой до 100% на Waicore Запускаете сайты на VPS? Сейчас самое время попробовать ISPmanager практически бесплатно. ➕ Наши акции: — 100% скидка на первый месяц лицензии ISPmanager при заказе VPS из категории «Веб-хостинг» — Скидка 60% на лицензии ISPmanager при отдельной покупке Также доступны: 🛡 SSL-сертификаты 🛡 BitNinja для защиты серверов от атак, спама и вредоносного ПО. Получаете готовый VPS с установленной панелью управления и можете сразу приступать к работе с сайтами, почтой, базами данных и другими сервисами. ⚡️Акция действует месяц. Подробнее на сайте WAICORE.
853
20
Java: используйте полиморфизм вместо цепочек instanceof. Проверки типов часто приводят к разрастающимся if/else, нарушают при
Java: используйте полиморфизм вместо цепочек instanceof. Проверки типов часто приводят к разрастающимся if/else, нарушают принцип Open/Closed и заставляют изменять существующий код при добавлении новых сущностей. ❌ До: public String describe(Animal animal) { if (animal instanceof Dog) { return "Woof"; } else if (animal instanceof Cat) { return "Meow"; } else if (animal instanceof Cow) { return "Moo"; } throw new IllegalArgumentException("Unknown animal"); } Каждый новый тип требует правки метода. ✅ После: public interface Animal { String sound(); } public final class Dog implements Animal { public String sound() { return "Woof"; } } public final class Cat implements Animal { public String sound() { return "Meow"; } } public final class Cow implements Animal { public String sound() { return "Moo"; } } public String describe(Animal animal) { return animal.sound(); } Преимущества: → нет цепочек instanceof и приведения типов → меньше условной логики → проще расширять систему новыми типами → соблюдается принцип Open/Closed → поведение находится внутри самого объекта, а не размазано по коду Добавить новое животное теперь можно без изменения существующей логики: public final class Sheep implements Animal { public String sound() { return "Baa"; } } Клиентский код останется прежним: describe(new Sheep()); Пусть объекты сами решают, как себя вести. Именно для этого и существует полиморфизм. #Java #OOP 👉 Java Portal
1 125