Java Guru πŸ€“
13.2K subscribers
883 photos
16 videos
748 links
Канал с вопросами ΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ с собСсСдований!

По сотрудничСству ΠΈ Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅: @NadikaKir

Канал Π² ΠΏΠ΅Ρ€Π΅Ρ‡Π½Π΅ РКН: https://vk.cc/cJrSQZ

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ доступа?

πŸ”˜private – доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСпосрСдствСнно ΠΈΠ· этого класса ΠΈ Π΅Π³ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ…/Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… классов;
πŸ”˜package-private – доступ ΠΈΠ· всСх классов этого ΠΏΠ°ΠΊΠ΅Ρ‚Π°. НаслСдники доступа Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½;
πŸ”˜protected – доступ ΠΈΠ· всСх классов этого ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΈ всСх наслСдников;
πŸ”˜public – Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ доступа;

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ доступа ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊ классам, интСрфСйсам, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ полям. Они Π½ΡƒΠΆΠ½Ρ‹ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ ΠΈ для отдСлСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚ частСй ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
❀10πŸ”₯5πŸ‘2
β˜„οΈΠšΠ°ΠΊ устроСно Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² поисковых систСмах?

πŸ—“ 8 октября Π² 20:00 МБК ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ OTUS «Как Π²Ρ‹Ρ€Π°ΡΡ‚ΠΈΡ‚ΡŒ прСфиксноС Π΄Π΅Ρ€Π΅Π²ΠΎΒ». На Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ ΠΌΡ‹ пошагово построим прСфиксноС Π΄Π΅Ρ€Π΅Π²ΠΎ (Trie) для слов ΠΈΠ· большого тСкста, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ счётчики частот ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π±ΡƒΠΊΠ²Π°ΠΌ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ находятся всС слова с этим прСфиксом ΠΈ выводятся самыС популярныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠΉ.

Π£Ρ€ΠΎΠΊ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хотят Π³Π»ΡƒΠ±ΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈΡ… для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ поиска, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ тСкста ΠΈ построСния быстрых интСрфСйсов.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠ΅ старта курса «Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β». ВсС участники ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ скидку Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

πŸ‘‰Π—Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ сСйчас ΠΈ ΡƒΠ·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΡΡ‚ΠΈΡ‚ΡŒ своё ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Trie-Π΄Π΅Ρ€Π΅Π²ΠΎ: https://vk.cc/cQ7PSz


Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯4❀2πŸ‘2
ΠžΠΏΠΈΡˆΠΈΡ‚Π΅ процСсс создания экзСмпляра класса

Π‘Π½Π°Ρ‡Π°Π»Π° класс ΠΈ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹, свСрху Π²Π½ΠΈΠ·. Рассмотрим ClassLoader ΠΈ процСсс Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… постах. Π—Π΄Π΅ΡΡŒ Π²Π°ΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ класс загруТаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΊ Π½Π΅ΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠ³ΠΎ класслоадСра.

ПослС Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса выдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π΅Π³ΠΎ статичСскиС поля ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ статичСскиС Π±Π»ΠΎΠΊΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Π½ΠΈΠ²ΠΎΠΉ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° всСго класса, Π½ΠΎ ΠΈ инициализация Π΅Π³ΠΎ статичСских Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ.

Π”Π°Π»Π΅Π΅ инстанциируСтся сам экзСмпляр. Как ΠΈ с Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ классов, процСсс выполняСтся для всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ наслСдования, с самого дальнСго родитСля:
1. ВыдСляСтся ΠΏΠ°ΠΌΡΡ‚ΡŒ Π² ΠΊΡƒΡ‡Π΅ для экзСмпляра, получаСтся ссылка Π½Π° этот экзСмпляр;
2. Π’Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ нСстатичСских ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² порядкС объявлСния;
3. ВызываСтся конструктор;

БтатичСскиС поля интСрфСйсов Π½Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ создании ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ состояния интСрфСйс Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ – это ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ вопрос порядка ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² ΠΏΡ€ΠΈ мноТСствСнном наслСдовании.

Π’ процСссС конструирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π² конструкторС, свойствСнная для ΠΌΠ½ΠΎΠ³ΠΈΡ… языков.
Effective Java Item 17 Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅Ρ‚ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пСрСопрСдСляСмыС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π² Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅ΠΌΠΎΠΌ классС. Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π΅ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎΠ³ΠΎ повСдСния Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Π²Ρ‹ΡˆΠ΅ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘11πŸ”₯5❀2
new Integer(128) == 128?

Для всСх классов-ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΊ Π½Π°Π΄ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π°ΠΌΠΈ ΠΊΡ€ΠΎΠΌΠ΅ Float ΠΈ Double Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. НСкоторыС значСния ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½Π° этапС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса, ΠΈ ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ создаСтся Π½Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ new (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ valueOf).

ΠšΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ значСния – ΠΎΠ±Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Boolean, Character Π΄ΠΎ '\u007f' (127) ΠΈ всС Ρ†Π΅Π»Ρ‹Π΅ числа ΠΎΡ‚ -128 Π΄ΠΎ 127 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ. Π‘ Java 7 Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ для Integer ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ java.lang.Integer.IntegerCache.high.

ЗначСния ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… встроСнных классах: BigDecimal, Currency, пустыС ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ. Π”Π΅Ρ‚Π°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Π²Π°Ρ‚ΡŒ ΠΈΠ· исходников ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ эти кэши Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ JVM Π° Π² ΠΊΠΎΠ΄Π΅ классов.

Π’ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ скрыт Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Π²ΠΎΡ…: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ сравниваСтся с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠΌ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ анбоксингу ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. И ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос – Π΄Π°.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘11πŸ”₯4❀1🀯1
Новый Yandex Cup β€” рСгистрация ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°

ЯндСкс собираСт бэкСнд-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π½Π° Yandex Cup β€” Ρ‡Π΅ΠΌΠΏΠΈΠΎΠ½Π°Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ с ΠΏΡ€ΠΈΠ·ΠΎΠ²Ρ‹ΠΌ Ρ„ΠΎΠ½Π΄ΠΎΠΌ 12 ΠΌΠ»Π½ Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Ρ„ΠΈΠ½Π°Π»ΠΎΠΌ Π² Π‘Ρ‚Π°ΠΌΠ±ΡƒΠ»Π΅.

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅ появится ΠΏΡ€ΠΎΠ±Π½Ρ‹ΠΉ Ρ‚ΡƒΡ€ для знакомства с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ, Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π·Π°Π΄Π°Ρ‡ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° сайтС.

Π­Ρ‚Π°ΠΏΡ‹:
β€” ΠΏΡ€ΠΎΠ±Π½Ρ‹ΠΉ Ρ‚ΡƒΡ€ 20–29 октября (ΠΎΠ½Π»Π°ΠΉΠ½)
β€” квалификация 2 ноября (ΠΎΠ½Π»Π°ΠΉΠ½)
β€” Ρ„ΠΈΠ½Π°Π» Π² Π‘Ρ‚Π°ΠΌΠ±ΡƒΠ»Π΅ 5–7 дСкабря (ΠΎΡ„Π»Π°ΠΉΠ½)

Π›ΡƒΡ‡ΡˆΠΈΡ… ΠΆΠ΄ΡƒΡ‚ Π΄Π΅Π½Π΅ΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Ρ‹ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠΏΠ°ΡΡ‚ΡŒ Π² ЯндСкс ΠΏΠΎ фаст-Ρ‚Ρ€Π΅ΠΊΡƒ.

β€’ 1 мСсто β€” 500 000 β‚½
β€’ 2 мСсто β€” 400 000 β‚½
β€’ 3 мСсто β€” 300 000 β‚½
β€’ 4 мСсто β€” 200 000 β‚½
β€’ 5 мСсто β€” 100 000 β‚½

УспСйтС Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π΄ΠΎ 29 октября
πŸ”₯4❀3πŸ‘3
Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ хранящСй null?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Ссли пСрСмСнная Π½Π΅ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ L-value этого Ρ‚ΠΈΠΏΠ° – ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ null, Π½ΠΎ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ‚ΠΈΠΏΠ°:
πŸ”˜Π‘Ρ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ с null ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ этого ΠΆΠ΅ класса;
πŸ”˜ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Ρ‚ΠΈΠΏΡƒ-Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŽ (upcast) ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏΡƒ-наслСднику (downcast), учитывая Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ generic-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ;
πŸ”˜ΠžΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Ρ‡Π»Π΅Π½Π°ΠΌ экзСмпляра ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ NullPointerException;
πŸ”˜ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ instanceof ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ false
πŸ”˜Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… совмСстимых с Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ статичСским Ρ‡Π»Π΅Π½Π°ΠΌ класса. Π’ вопросС подразумСваСтся ΠΈΠΌΠ΅Π½Π½ΠΎ эта интСрСсная Ρ‡Π°ΡΡ‚ΡŒ. Π­Ρ‚ΠΎ бСзопасно, NullPointerException Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚, Π½ΠΎ для упрощСния ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈ ΠΈΠ·-Π·Π° отсутствия пСрСопрСдСлСния статичСских Ρ‡Π»Π΅Π½ΠΎΠ² рСкомСндуСтся Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ. ВмСсто этого ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ ΠΊ статикС явно Ρ‡Π΅Ρ€Π΅Π· имя класса, Π»ΠΈΠ±ΠΎ нСявно, Π΄ΠΎΠ±Π°Π²ΠΈΠ² для класса import static.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯6πŸ‘3❀2
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ enum?

enum
– Ρ‚ΠΈΠΏ-пСрСчислСниС. Π‘Ρ‹Π²Π°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΎΠΊ вопроса, всС ΠΎΠ½ΠΈ сводятся ΠΊ Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Ρƒ ΠΎ пСрСчислСниях Π²ΠΎΠΎΠ±Ρ‰Π΅. ВСхничСски это Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ класс со статичСскими Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ полями-экзСмплярами. enum Foo всСгда нСявно наслСдуСтся ΠΎΡ‚ Enum<Foo> – Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ пСрСчислСниСм нСльзя Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс, Π½ΠΎ всё Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйсы. Из-Π·Π° generic-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ€Π°Π·Π½Ρ‹Π΅ пСрСчислСния Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ±Ρ‰Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠ° ΠΊΡ€ΠΎΠΌΠ΅ Object.

ЯвляСтся Comparable (сравниваСтся позиция ΠΏΠΎ порядку объявлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ) ΠΈ Serializable (сСриализуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ имя константы).

Π˜ΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ЗначСния нСявно public static final ΠΈ это нСльзя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ. Для ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ констант Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ всС ΠΏΡ€Π°Π²ΠΈΠ»Π° статичСской ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Копии элСмСнтов пСрСчислСния Π½Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ дСсСриализации. Π’ΠΎΡ‚ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Effective Java ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для сСриализуСмого синглтона enum.

ЭкзСмпляры хранят свойства name ΠΈ ordinal – имя ΠΈ порядковый Π½ΠΎΠΌΠ΅Ρ€ константы. БтатичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ values Π²Π΅Ρ€Π½Π΅Ρ‚ список всСх констант, valueOf – константу ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ.
БпСцификация.

Ѐинализация ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ пСрСчислСний Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘11πŸ”₯4❀2
❀️ ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Backend Talks ΠΎΡ‚ ЯндСкс 360
Π‘Π°Π½ΠΊΡ‚-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 13 ноября Π² 19:00

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ записи встрСч, Π½Π°Π²Π΅Π΄Ρ‘ΠΌ порядок Π² API ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ простыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡΠΏΠ°ΡΠ°ΡŽΡ‚ сСрвисы.

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:

πŸ“Œ Как Π½Π΅ ΡƒΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π²Π°ΠΆΠ½ΠΎΠ΅: Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΠ±Π»Π°Ρ‡Π½ΠΎΠΉ записи ΠΈ конспСктирования видСовстрСч Π² ВСлСмостС β€” Илья Π“Ρ€ΠΈΠ³ΠΎΡ€ΡŒΠ΅Π², Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ бэкСнда ВСлСмоста.

πŸ“Œ Π£ΠΊΡ€ΠΎΡ‰Π΅Π½ΠΈΠ΅ API: процСссы ΠΈ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ β€” Никита Π›ΠΎΠΌΠ°ΠΊΠΈΠ½, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π’Π΅Ρ…ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

πŸ“Œ Как ΠΌΡ‹ Π·Π°ΠΊΠ°ΠΏΡ‹Π²Π°Π»ΠΈ Π·Π²Π΅Π·Π΄ΠΎΠ»Ρ‘Ρ‚: ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΡΡ‚Π°ΠΈΠ²Π°Ρ‚ΡŒ простоту Π½Π° Π°Ρ€Ρ…Ρ€Π΅Π²ΡŒΡŽ β€” АртСмий ΠšΠΎΡ†ΡŽΠ±Π΅Π½ΠΊΠΎ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»ΡŒΠ½Ρ‹Ρ… сСрвисов ΠŸΠΎΡ‡Ρ‚Ρ‹.

Команда ЯндСкс 360 Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ°ΠΌΠΈ >1.000.000+ RPS ΠΈ создаСт ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 95+ ΠΌΠ»Π½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ мСсяц β€” Диск, ΠŸΠΎΡ‡Ρ‚Π°, ВСлСмост, ΠœΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ€ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

🍻А послС Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² вас Π±ΡƒΠ΄ΡƒΡ‚ ΠΆΠ΄Π°Ρ‚ΡŒ Π°Ρ„Ρ‚Π΅ΠΏΠ°Ρ‚ΠΈ ΠΈ Π½Π΅Ρ‚Π²ΠΎΡ€ΠΊΠΈΠ½Π³!

Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΏΠΎ ссылкС
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯3πŸ‘2❀1
Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ классов?

Π’ Java ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ динамичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° классов. Π•Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ – наслСдники абстрактного класса ClassLoader. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΎΠ½ΠΈ ΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹-рСсурсы.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° класса (Ρ‚ΠΎΡ‡Π½Π΅Π΅ любого ссылочного Ρ‚ΠΈΠΏΠ°) ΠΈ всСх Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄ΠΊΠΎΠ² происходит автоматичСски ΠΏΠ΅Ρ€Π΅Π΄ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΡ€ΠΈ этом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΡ‚ Π»ΠΎΠ°Π΄Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠΎΠ΄. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° всСх, Π΄Π°ΠΆΠ΅ встроСнных классов – лСнивая.

Π’Ρ€ΡƒΡ‡Π½ΡƒΡŽ класс ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΈΠ· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° loadClass Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ имя класса.

Π’ URLClassLoader ΠΈ стандартных Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°Ρ… JVM источником класса слуТит .class-Ρ„Π°ΠΉΠ». Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ Π² своСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ источники: это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сСтСвой рСсурс, ΠΈΠ»ΠΈ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ ΠΈΠ· javassist спСциализируСтся Π½Π° создании классов Π½Π° Π»Π΅Ρ‚Ρƒ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ создаСтся экзСмпляр класса Class. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠ΅ экзСмпляры хранятся Π½Π΅ Π² ΠΊΡƒΡ‡Π΅, Π° Π² permgen/metaspace. Class ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ΅Π½, ΠΊΠΎΠ³Π΄Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ²ΡˆΠΈΠΉ Π΅Π³ΠΎ ClassLoader стал мусором.

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯9πŸ‘4❀1
ΠšΠ°Ρ€Ρ‚Ρ‹, дСньги, Π΄Π²Π° ствола? No, no, no! Π£ нас Π΅ΡΡ‚ΡŒ ΠΊΠΎΠ΅-Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅: ΠΌΠΈΡ‚Π°ΠΏ Β«ΠšΠ°Ρ€Ρ‚Ρ‹, дСньги, JVMΒ»

Π­Ρ‚ΠΎ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π³Π»ΡΠ½ΡƒΡ‚ΡŒ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ JVM ΠΈ компилятора, Π½ΠΎ ΠΈ ΠΏΠΎΠ²ΠΎΠ΄ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ провСсти врСмя Π² классной ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ЭкспСрты ΠΈΠ· PVS-Studio Ρ€Π°Π·Π±Π΅Ρ€ΡƒΡ‚, ΠΊΠ°ΠΊ JVM ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ динамичСскиС Π²Ρ‹Π·ΠΎΠ²Ρ‹, Ρ‡Π΅ΠΌ MethodHandle Π»ΡƒΡ‡ΡˆΠ΅ рСфлСксии, ΠΈ ΠΊΠ°ΠΊ компилятор ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΠ΄ β€” ΠΎΡ‚ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° Π΄ΠΎ практичСского примСнСния.

Π”ΠΎΠΊΠ»Π°Π΄Ρ‹:

β–ͺ️ «Как JVM ΡƒΡ‡ΠΈΠ»Π°ΡΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ нСпрСдсказуСмоС»

Π£Π²ΠΈΠ΄ΠΈΠΌ, ΠΊΠ°ΠΊ JSR 292 (MethodHandle, CallSite, invokedynamic) ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π»Π°Π½Π΄ΡˆΠ°Ρ„Ρ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ² JIT-компилятору ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ казалось нСподвластным ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ.

β–ͺ️ Β«Π§Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π° компилятора, ΠΈ ΠΊΠ°ΠΊ это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ»

Рассмотрим Ρ‡Π°ΡΡ‚ΡŒ, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΡƒΡŽ Π·Π° Ρ€Π°Π·Π±ΠΎΡ€ исходного ΠΊΠΎΠ΄Π° ΠΈ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·: ΠΈΠ· Ρ‡Π΅Π³ΠΎ состоит Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ компилятора, ΠΊΠ°ΠΊ ΠΎΠ½ "Π²ΠΈΠ΄ΠΈΡ‚" ΠΊΠΎΠ΄ ΠΈ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π·Π°Π΄Π°Ρ‡ статичСского Π°Π½Π°Π»ΠΈΠ·Π°: ΠΎΡ‚ поиска ошибок Π² ΠΊΠΎΠ΄Π΅ Π΄ΠΎ taint Π°Π½Π°Π»ΠΈΠ·Π°.

А Π΅Ρ‰Ρ‘ вас ΠΆΠ΄ΡƒΡ‚ ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ со спикСрами ΠΈ ΠΏΠΈΡ†Ρ†Π°!

УчастиС бСсплатноС. ΠœΠ΅ΡΡ‚Π° Π² ΠΎΡ„Π»Π°ΠΉΠ½-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹! Π‘ΠΏΠ΅ΡˆΠΈΡ‚Π΅ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Π‘Π‘Π«Π›ΠšΠ•.
πŸ‘2
КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ стандартныС Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ классов?

Π’ JVM встроСно ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ‚Ρ€ΠΈ стандартных Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°:

πŸ”˜Bootstrap – встроСнная Π² JVM нативная рСализация, Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ для всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ². Π—Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ‡Π°ΡΡ‚ΡŒ стандартных классов java.*;
πŸ”˜Platform – ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ стандартных классов Java-Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ°. Π”ΠΎ Java 9 назывался Extension ΠΈ занимался Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. ГарантируСтся, Ρ‡Ρ‚ΠΎ Π΅ΠΌΡƒ Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΈΠ΄Π½Ρ‹ (Π½ΠΎ Π½Π΅ Ρ„Π°ΠΊΡ‚ Ρ‡Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ нСпосрСдствСнно ΠΈΠΌ) всС стандартныС классы Java SE ΠΈ JDK;
πŸ”˜System (Application) – Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ классы ΠΈΠ· classpath ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ прилоТСния;

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ класс, ClassLoader ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π»ΠΈ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ. Если класс ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½, Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ потрСбуСтся.

Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ смысла этой ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ – Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ web-сСрвСра Apache Tomcat. ΠŸΡ€ΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ web-прилоТСния Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° своСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ΅ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π”Π°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс-singleton Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ прилоТСния Π±ΡƒΠ΄Π΅Ρ‚ собствСнный. БистСмныС классы ΠΈ ΠΎΠ±Ρ‰ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ грузятся ΠΈΡ… Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· для сСрвСра.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘8πŸ”₯4
Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ свой ΠΌΠΈΠ½ΠΈ-Google? πŸš€
πŸ—“ 22 октября, 20:00 ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ OTUS «Мини-поисковик своими Ρ€ΡƒΠΊΠ°ΠΌΠΈΒ». На этом Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ Π²Ρ‹ создадитС поисковик с нуля β€” Π±Π΅Π· Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΈ ΠΌΠ°Π³ΠΈΠΈ. Волько Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ ΠΊΠΎΠ΄.

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ, ΠΊΠ°ΠΊ:
β€’ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ КМП ΠΈ прСфиксноС Π΄Π΅Ρ€Π΅Π²ΠΎ;
β€’ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ подсчёт Π²Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ;
β€’ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ поиск ΠΏΠΎΠ΄ большиС тСксты;
β€’ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ всё это Π² малСнький, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΎΡ„Π»Π°ΠΉΠ½-поисковик.

ПослС Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° Π²Ρ‹ смоТСтС ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ:
β€” ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ индСкс слов ΠΈ быстро ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎ Π½Π΅ΠΌΡƒ;
β€” ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ статистику запросов;
β€” ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ Π²Π½ΡƒΡ‚Ρ€ΠΈ устроСны поисковики.

ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠ΅ старта курса «Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ…Β». ВсС участники ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ скидку Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡ‚Π΅ΡΡŒ 22 октября Π² 20:00:

https://vk.cc/cQpVAw

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576
πŸ‘3πŸ”₯2
Π§Π΅ΠΌ отличаСтся ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡ‚ пСрСопрСдСлСния?

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – соль ООП. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° (overload) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (override) – Π΄Π²Π° инструмСнта достиТСния ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„Π½ΠΎΠ³ΠΎ повСдСния Π² Java.

ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ рСализуСтся ad-hoc-ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Β«ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅Β» ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ. Π‘ тСхничСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния это просто Π΄Π²Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, сигнатуры ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ для ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π΅ достаточно Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈ списков ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ.

Ad-hoc – Π½Π΅ совсСм настоящий ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π½Ρ‘ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π°Π½Π½Π΅Π΅, ΠΈΠ»ΠΈ статичСскоС связываниС (early binding, static dispatch). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ для Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ информация ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π½Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Π½Π΅ΠΉ Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ, ΠΈ происходит это Π΅Ρ‰Π΅ ΠΏΡ€ΠΈ компиляции.

Если Π² классС ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π΄Π²Π° ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π² Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΠΎΠ΄ ΠΎΠ±Π°, случится ошибка компиляции. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ компилятор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° println с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ char[] ΠΈ со String, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ null ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈ Ρ‚Π΅ΠΌ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (override) Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠ². Π­Ρ‚ΠΎ рСализация/ΠΏΠΎΠ΄ΠΌΠ΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса ΠΈΠ»ΠΈ интСрфСйса. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° достигаСтся ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° экзСмпляр хранится ΠΏΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΠΌ родитСля, Π½ΠΎ рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ спСцифичная для этого ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠ°. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:
List<String> list = new LinkedList<>();
list.add(β€œfooβ€œ);


Π—Π΄Π΅ΡΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ add вызываСтся ΠΎΠ±Ρ‰ΠΈΠΉ для всСх списков, Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ элСмСнт связного списка.

Π’Ρ‹Π±ΠΎΡ€ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° происходит Π² послСдний ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π² процСссС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π² зависимости ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π­Ρ‚ΠΎ называСтся ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΈΠ»ΠΈ динамичСскоС связываниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (late binding, dynamic dispatch).

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ нСпосрСдствСнноС ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ подстановки Лисков (LSP): Π² Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ для Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΌ ΠΎΡ‚ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ принято ΡΠ½Π°Π±ΠΆΠ°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ
@Override. Π•Π΅ отсутствиС допускаСтся, Π½ΠΎ компиляция Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с Ρ‚Π°ΠΊΠΎΠΉ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС.

ΠŸΡ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡƒΠ·ΠΈΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ выбрасываСмых ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Ρ‚ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ доступа Π½Π° ΠΌΠ΅Π½Π΅Π΅ строгий.

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ нСльзя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘10πŸ”₯6❀2
πŸ”₯ БоврСмСнная оркСстрация Kotlin-прилоТСниями

ΠŸΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ ΡƒΡ€ΠΎΠΊ.

πŸ—“ 22 октября Π² 19:00 МБК
πŸ†“ БСсплатно. Π£Ρ€ΠΎΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… старта курса Β«Kotlin Backend Developer. ProfessionalΒ».

Π£ΠΆΠ΅ ΠΏΡ€ΠΎΡˆΠ»Π° эпоха ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π°, ΠΊΠΎΠ³Π΄Π° Ρ†Π΅Π»Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ занимались Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±ΡŠΡΡ‚Π½ΠΎΠ³ΠΎ прилоТСния. БСйчас любая информационная систСма насыщСна Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ сСрвисами, Π° микросСрвисами ΡƒΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³ΠΎ Π½Π΅ ΡƒΠ΄ΠΈΠ²ΠΈΡˆΡŒ.
ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ собСсСдований стал вопрос ΠΏΡ€ΠΎ Saga, Ρ…ΠΎΡ€Π΅ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ ΠΈ ΠΎΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ.
И ΠΈΠΌΠ΅Π½Π½ΠΎ эту Ρ‚Π΅ΠΌΡƒ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π½Π° Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊ Kotlin-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅.

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅:
- ΠžΠ±ΡΡƒΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ оркСстраторы Ρ‚ΠΈΠΏΠ° Airflow ΠΈΠ»ΠΈ Camunda, Ρ‚Π°ΠΊ Π½ΠΎΠ²Ρ‹Ρ… ΠΈΠ³Ρ€ΠΎΠΊΠΎΠ².
- На практичСской части Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, управляСмоС оркСстратором.

πŸ”— Бсылка Π½Π° Ρ€Π΅Π³ΠΈΡΡ‚Ρ€Π°Ρ†ΠΈΡŽ: https://vk.cc/cQpD2P

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘2πŸ”₯2
Π§Π΅ΠΌ отличаСтся interface ΠΎΡ‚ @⁠interface?

Π‘Ρ€Π΅Π΄ΠΈ интСрфСйсов выдСляСтся особая Π³Ρ€ΡƒΠΏΠΏΠ°, которая Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠ³ΠΎ интСрфСйса – Serializable. Π’Π°ΠΊΠΈΠ΅ интСрфСйсы Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ классу Π½Π΅ΠΊΡƒΡŽ сСмантику, которая ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈΠ±ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСфлСксии (ΠΈ instanceof), Π»ΠΈΠ±ΠΎ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, Π° ΠΊΠ°ΠΊ информация для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ‚ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π½Ρ‹Π΅ интСрфСйсы. ΠœΠ°Ρ€ΠΊΠ΅Ρ€Π½Ρ‹ΠΉ интСрфСйс прСдставляСт ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ класса.

Начиная с Java 1.5 Π² языкС появился Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΠ΄ Ρ‚ΠΈΠΏΠΎΠ² – Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ. Они Π±Π΅Ρ€ΡƒΡ‚ Π½Π° сСбя ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‚ возмоТности ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π½ΠΎΠ³ΠΎ интСрфСйса:
1. МоТно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ классу ΠΈΠ»ΠΈ интСрфСйсу, Π½ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ ΠΊ Ρ‡Π΅ΠΌΡƒ ΡƒΠ³ΠΎΠ΄Π½ΠΎ: ΠΊ ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌ, ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, ΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. ΠŸΠΎΠ»Π½Ρ‹ΠΉ список прСдставлСн Π² пСрСчислСнии ElementType;
2. Аннотация ΠΌΠΎΠΆΠ΅Ρ‚ нСсти Π΄Π°Π½Π½Ρ‹Π΅ Π² своих элСмСнтах
3. Аннотация ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² исходникС, Π½Π΅ ΠΏΠΎΠΏΠ°Π² Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ вовсС. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ΡΡ Π΅Π΅ RetentionPolicy;
4. МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ Π½Π΅ наслСдуСмой, просто Π½Π΅ помСчая Π΅Π΅
@Inherited;
5. И ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, синтаксис. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½Π°Ρ аннотация с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда отличаСтся ΠΎΡ‚ настоящих интСрфСйсов.

Joshua Block Π² Π³Π»Π°Π²Π΅ 37 Effective Java выдСляСт Π΄Π²Π° прСимущСства ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π½Ρ‹Ρ… интСрфСйсов ΠΏΠ΅Ρ€Π΅Π΄ аннотациями Π½Π° этапС компиляции:
1. МоТно Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒ использованиС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°Ρ€ΠΊΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π½Ρ‹ΠΉ интСрфСйс – это Π΅Ρ‰Π΅ ΠΈ Ρ‚ΠΈΠΏ;
2. МоТно ΡΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π° ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ, сдСлав интСрфСйс ΠΈΡ… наслСдником.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡΡΡŒ ΠΊ вопросу, ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово
@interface ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ, interface – интСрфСйс.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ компиляции Π² .class-Ρ„Π°ΠΉΠ»Π΅ аннотация прСвращаСтся Π² интСрфСйс-наслСдник java.lang.annotation.Annotation, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„Π»Π°Π³ΠΎΠΌ ACC_ANNOTATION. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Π² абстрактныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π­Ρ‚ΠΈΠΌ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ синтаксис объявлСния. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΡ‡Π½Ρ‹Π΅ для Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ описаны Π² JVMS 4.7.16-4.7.22.

К слову, конструкции Π²ΠΈΠ΄Π°
@something Π² javadoc Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ тэгами. Они выглядят ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ тСхничСски Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ с Π½ΠΈΠΌΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ.

ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
❀6πŸ”₯3πŸ‘2
Media is too big
VIEW IN TELEGRAM
Как Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π±Π°Π½ΠΊΠ° ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ клиСнтского сСрвиса Π² 2025 Π³ΠΎΠ΄Ρƒ?

УзнаСшь Π² Π½ΠΎΠ²ΠΎΠΌ выпускС подкаста Β«Π’Π΅Ρ…Π½ΠΎ.Π›ΠΎΠ³ΠΈΡ‡Π½ΠΎΒ» с Павлом Наумовым ΠΈ Павлом ΠšΠ°Ρ€Π΅Ρ‚Π½ΠΈΠΊΠΎΠ²Ρ‹ΠΌ πŸ§‘β€πŸ’»

Π—Π° послСдниС ΠΏΠ°Ρ€Ρƒ Π»Π΅Ρ‚ мобильная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² Π±Π°Π½ΠΊΠ°Ρ… сущСствСнно помСнялась, Π“Π°Π·ΠΏΡ€ΠΎΠΌΠ±Π°Π½ΠΊ Ρ‚ΠΎΠΆΠ΅ столкнулся с Π½ΠΎΠ²Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ. ΠžΠ±ΡΡƒΠ΄ΠΈΠ»ΠΈ измСнСния Π² ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°Ρ… ΠΈ тонкости Π½ΠΎΠ²ΠΎΠΉ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ с Ρ‚Π΅ΠΌΠΈ, ΠΊΡ‚ΠΎ пСрСзапускал Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ Π“Π°Π·ΠΏΡ€ΠΎΠΌΠ±Π°Π½ΠΊΠ°.

Π“Π΅Ρ€ΠΎΠΈ рассказали, ΠΊΠ°ΠΊ Π“Π°Π·ΠΏΡ€ΠΎΠΌΠ±Π°Π½ΠΊ пСрСстроил Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹ Π·Π° Π³ΠΎΠ΄: ΠΎΡ‚ внСшнСго Π²Π΅Π½Π΄ΠΎΡ€Π° Π΄ΠΎ собствСнной ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹, ΠΈ подСлились, Π³Π΄Π΅ находят ΡΠ½Π΅Ρ€Π³ΠΈΡŽ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² интСнсивном Ρ€ΠΈΡ‚ΠΌΠ΅.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ‚Π΅ΠΌΡ‹ эпизода:
⏺Как достигаСтся Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ интСрфСйсов Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…
⏺Как устроСна Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π“Π°Π·ΠΏΡ€ΠΎΠΌΠ±Π°Π½ΠΊΠ°
⏺КакиС ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ качСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
⏺КакиС Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ клиСнтскиС ΠΏΡƒΡ‚ΠΈ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ взаимодСйствиС с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ
⏺КакиС ΠΏΠ»Π°Π½Ρ‹ Π½Π° Π±ΡƒΠ΄ΡƒΡ‰Π΅Π΅ Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Ρ… ΠΊΠ°Π½Π°Π»ΠΎΠ² Π“Π°Π·ΠΏΡ€ΠΎΠΌΠ±Π°Π½ΠΊΠ°

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ:
πŸ“Ί VK Π’ΠΈΠ΄Π΅ΠΎ
πŸ“Ί Rutube

ΠŸΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ:
🎡 ЯндСкс ΠœΡƒΠ·Ρ‹ΠΊΠ°
πŸ“± Apple Podcasts
πŸ’™ VK ΠŸΠΎΠ΄ΠΊΠ°ΡΡ‚Ρ‹

#GPBtechno_подкаст #GPB_Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΎ

Π Π΅ΠΊΠ»Π°ΠΌΠ°, Π‘Π°Π½ΠΊ Π“ΠŸΠ‘ (АО), ИНН: 7744001497, erid: 2Vtzqw6drnJ
Please open Telegram to view this post
VIEW IN TELEGRAM
❀2πŸ‘2πŸ”₯2
πŸ‘4πŸ”₯2
Когда Class.getClassLoader Π²Π΅Ρ€Π½Π΅Ρ‚ null?

Π­Ρ‚ΠΎΡ‚ вопрос ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π΅ Ρ‚Π΅ΠΌΡ‹. ΠŸΠ΅Ρ€Π²Π°Ρ – класс Class Π² Ρ†Π΅Π»ΠΎΠΌ. ЭкзСмпляры Class<T> ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ runtime-описаниС Ρ‚ΠΈΠΏΠΎΠ². Π’ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… этого описания пСрСчислСния ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ классами, Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ – интСрфСйсами. Π’ основном приходится Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с мСтаклассами ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с рСфлСксиСй ΠΈΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ.

По большСй части эти экзСмпляры класса Class состоят ΠΈΠ· содСрТимого .class-Ρ„Π°ΠΉΠ»Π°. Π‘ΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΎΠ½ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ класслоадСра. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ ΠΈΡ… хранСния Π² памяти ΠΎΠ±ΡΡƒΠΆΠ΄Π°ΡŽΡ‚ΡΡ Π²
ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ постС.

Вторая Ρ‚Π΅ΠΌΠ° для Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π° здСсь – особСнности класса Class для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ², массивов ΠΈ void. Для получСния Ρ‚Π°ΠΊΠΈΡ… экзСмпляров ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΡ‚ ΠΆΠ΅ синтаксис, Ρ‡Ρ‚ΠΎ ΠΈ для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… классов: void.class, int.class, float[][].class. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ foo.class – это Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ‡Π»Π΅Π½Ρƒ, Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π» класса.

Для void Ρ‚ΠΈΠΏΠΎΠΌ-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ T выступаСт ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ нСинстанциируСмый Ρ‚ΠΈΠΏ java.lang.Void. Π’ΠΈΠΏ-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π° – ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс-Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€. Π₯отя для самого класса-Π²Ρ€Π°ΠΏΠΏΠ΅Ρ€Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр Class. Π’ΠΎ Π΅ΡΡ‚ΡŒ int.class != Integer.class.

ΠœΠ΅Ρ‚ΠΎΠ΄ getClassLoader ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ класса ΠΈΠ»ΠΈ интСрфСйса Π²Π΅Ρ€Π½Π΅Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ». null ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ для Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ bootstrap-класслоадСром Ρ‚ΠΈΠΏΠ°. Для массива возвращаСтся Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ для Ρ‚ΠΈΠΏΠ° Π΅Π³ΠΎ элСмСнтов. Для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² ΠΈ void Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ всСгда Π±ΡƒΠ΄Π΅Ρ‚ null.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘5πŸ”₯4❀3
πŸ—ΠšΡƒΡ€Ρ β€œSoftware Architect” ΠΎΡ‚ OTUS β€” старт Π½Π°Π±ΠΎΡ€Π° Π² Π³Ρ€ΡƒΠΏΠΏΡƒ обучСния!
Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ отказоустойчивыС ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ систСмы β€” этот курс для вас!

ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит ΠΏΠΎΠΉΡ‚ΠΈ:

- 100% ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…
- ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΠΈΠ±ΠΊΠΈΡ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€
- ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΡ‹, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ, Big Data
- Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹: CQRS, Event Sourcing ΠΈ Π΄Ρ€.

πŸ’‘ ΠšΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚:

- Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΌ Π²Ρ‹ΠΉΡ‚ΠΈ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ
- АрхитСкторам, ΡƒΠ³Π»ΡƒΠ±Π»ΡΡŽΡ‰ΠΈΠΌ экспСртизу
- Π’ΠΈΠΌΠ»ΠΈΠ΄Π°ΠΌ ΠΈ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π°ΠΌ

βœ…ΠŸΠΎΡΠ»Π΅ курса Π²Ρ‹ смоТСтС:

- ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹
- ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ взаимодСйствиС сСрвисов
- ΠŸΠΎΠ²Ρ‹ΡˆΠ°Ρ‚ΡŒ качСство ΠΈ ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ систСм

πŸ‘‰ ΠŸΡ€ΠΎΠΉΠ΄ΠΈΡ‚Π΅ Π²ΡΡ‚ΡƒΠΏΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ тСстированиС: https://vk.cc/cQw8lY

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576
❀3πŸ‘2πŸ”₯2
Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ A ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ B?

Π’ Java доступны Ρ‚Ρ€ΠΈ способа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ совмСстимости Ρ‚ΠΈΠΏΠΎΠ². Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ для Ρ€Π°Π·Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π’ порядкС убывания быстродСйствия:

instanceof – Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, самый быстрый ΠΈ самый ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ. Если Π΅ΡΡ‚ΡŒ экзСмпляр A ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ B явно, Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π°Π΄ΠΎ Π΅Π³ΠΎ. Если A (Ρ‚ΠΎΡ‡Π½Π΅Π΅ Ρ‚ΠΈΠΏ хранящСй экзСмпляр A ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ) ΠΈ B Π½Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ наслСдования – экзСмпляр Ρ‚ΠΎΡ‡Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ‚ΠΈΠΏΠΎΠΌ B ΠΈ компиляция ΡƒΠΏΠ°Π΄Π΅Ρ‚ с ошибкой inconvertible types.

Class::isInstance – ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° A. Π•Π³ΠΎ стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° экзСмпляр A Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ, Π½ΠΎ B – нСизвСстный Π½Π° этапС компиляции Ρ‚ΠΈΠΏ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… A a ΠΈ Class bClass, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ bClass.isInstance(a).

Class::isAssignableFrom – ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Class<A>. ЕдинствСнноС, Ρ‡Ρ‚ΠΎ остаСтся, Ссли экзСмпляра A Π½Π΅Ρ‚. bClass.isAssignableFrom(aClass).

Π•ΡΡ‚ΡŒ Π΅Ρ‰Π΅ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ способ – имСя экзСмпляр Ρ‚ΠΈΠΏΠ° A привСсти Π΅Π³ΠΎ ΠΊ B. Если Ρ‚ΠΈΠΏΡ‹ Π±Ρ‹Π»ΠΈ нСсовмСстимы, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ выбросит ClassCastException. Π­Ρ‚ΠΎ Π²ΠΎ всСх смыслах ΠΏΠ»ΠΎΡ…ΠΎΠΉ способ, ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΡ… Π½Π΅Ρ‚ оправдания. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π°Ρ аргумСнтация описана Π² Effective Java Item 57.


ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°ΠΉΡΡ Π½Π° наш ΠΊΠ°Π½Π°Π» Π² Max πŸŸͺ
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘6πŸ”₯3