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

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

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

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
КакиС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ стандартныС Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ классов?

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

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

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

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

24–25 августа ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ бэкСндСров с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‚ пяти Π»Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ„Π΅Ρ€ Π² ЯндСкс Ρ‡Π΅Ρ€Π΅Π· multitrack Π·Π° 2 дня. Достаточно Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π΄ΠΎ 20 августа ΠΈ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ нСсколько тСхничСских сСкции 24 августа, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΆΠ΅ 25-Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΡ„Π΅Ρ€ ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π±Ρ‹ интСрСсно ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒΡΡ.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π·Π° нСсколько собСсСдований слоТно ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ Π²Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. Multitrack ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Π°ΠΌ ΠΏΠΎΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ‚Ρ€Ρ‘Ρ… Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ… ЯндСкса ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ. Π’Ρ‹ смоТСтС ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠ΅ процСссы, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ½ΡΡ‚ΡŒ, с ΠΊΠ°ΠΊΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΠΈ тСхнологиями Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

Π£Π·Π½Π°Ρ‚ΡŒ подробности ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

РСклама. ООО "ЯндСкс". ИНН 7736207543
πŸ”₯4❀2πŸ‘2😁1
Π§Π΅ΠΌ отличаСтся ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΎΡ‚ пСрСопрСдСлСния?

ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ – соль ООП. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° (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. Π•Π΅ отсутствиС допускаСтся, Π½ΠΎ компиляция Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с Ρ‚Π°ΠΊΠΎΠΉ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠ΅ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС.

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

БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ нСльзя ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ.
πŸ‘13πŸ”₯12❀2
⚑️ Π£Π·Π½Π°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ΠΎΠΌ Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ!

На ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ курса Β«Java Developer. AdvancedΒ» Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ классов ΠΈ для Ρ‡Π΅Π³ΠΎ это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ. ΠΠ°ΡƒΡ‡ΠΈΡ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для измСнСния Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… классов Π² runtime. Π­Ρ‚ΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ слоТныС Π·Π°Π΄Π°Ρ‡ΠΈ.

Π’Π΅Π±ΠΈΠ½Π°Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с вопросами ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ВстрСчаСмся 7 августа Π² 20:00 мск.

Π‘ΠΏΠΈΠΊΠ΅Ρ€ β€” Tech Lead Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… российских Π±Π°Π½ΠΊΠΎΠ² ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ тСхничСских Π½Π°ΡƒΠΊ.

πŸ‘‰ Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ бСсплатноС занятиС: https://vk.cc/cz2snD

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ₯°4πŸ‘2πŸ”₯2
Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ синглтон?

Singleton – это ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ проСктирования Β«ΠΎΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ°Β», класс с СдинствСнным экзСмпляром. Вакая пространная Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ простор для ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΈ для ΡƒΡ‚ΠΎΡ‡Π½ΡΡŽΡ‰ΠΈΡ… вопросов, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈ рассчитываСт ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽΠ΅Ρ€.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ – СдинствСнный экзСмпляр Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ‡Π΅Π³ΠΎ. Π’ Π±Π°Π·ΠΎΠ²ΠΎΠΌ случаС ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° обСспСчиваСтся Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса. Но ΠΏΡ€ΠΈ этом Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅ создаСтся ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ класслоадСр. Для ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° всю Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ. ΠŸΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡΡ большС дСйствий ΡƒΠΆΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ОБ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ экзСмпляра ΠΌΠ΅ΠΆΠ΄Ρƒ процСссами JVM. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ спСцифичноС для Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° суТСниС «области ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈΒ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ экзСмпляру Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Spring IoC-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Π±Ρ‹Ρ‚ΡŒ Ρ€ΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр, ΠΈΠ»ΠΈ Π½Π΅ большС ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠŸΡ€ΠΎΡ‰Π΅ говоря, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ созданиС Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π½ΠΈΠ²Ρ‹ΠΌ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ врСмя использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ внСшними условиями, ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ† Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΈΡ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ… подразумСваСтся Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ условиС ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΉ срСды – инстанцированиС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π”Ρ€ΡƒΠ³ΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ – сохранСниС состояния ΠΎΡ‚ запуска ΠΊ запуску. Π‘ΠΏΠ΅ΠΊΡ‚Ρ€ ΠΎΠΏΡ†ΠΈΠΉ здСсь ограничиваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π°Π½Ρ‚Π°Π·ΠΈΠ΅ΠΉ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ.
πŸ‘12πŸ”₯5
πŸ“š ΠŸΡ€ΠΎΠΉΠ΄ΠΈ тСст Π½Π° Π·Π½Π°Π½ΠΈΠ΅ Java ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ доступ ΠΊ 7️⃣2️⃣ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΡƒΡ€ΠΎΠΊΠ°ΠΌ ΠΏΠΎ Java

Π”Π²Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΡƒΡ€ΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π±Π΅Π· рСгистрации ΠΈ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ обучСния. Для доступа ΠΊΠΎ всСм ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΡƒΡ€ΠΎΠΊΠ°ΠΌ ΠΈΠ· курса Β«Java Developer. ProfessionalΒ» ΠΎΡ‚ OTUS Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΎΠΉΡ‚ΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ΅ тСстированиС: ΠΎΡ‚Π²Π΅Ρ‚ΠΈΡ‚ΡŒ Π½Π° 20 вопросов ΠΈ ΡƒΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π² Ρ‚Π°ΠΉΠΌΠΈΠ½Π³.

πŸ“Š -ΠšΡƒΡ€Ρ рассчитан Π½Π° профСссионалов с практичСским ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π° Java.
На курсС Π²Ρ‹ освоитС:
- созданиС соврСмСнных Java-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ;
- основы функционирования JVM (сборка мусора, byteCode);
- ΠΏΡ€ΠΈΠ΅ΠΌΡ‹ примСнСния многопоточности;
- Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ уровня Middle+;
- соврСмСнныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Spring WebFlux, Kafka, Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Postgres ΠΈ Kubernetes;
- написаниС ΠΊΠΎΠ΄Π° Ρ‡ΠΈΡ‰Π΅ ΠΈ быстрСС.

Π—Π°Π±ΡƒΠ΄ΡŒΡ‚Π΅ ΠΎ скучном ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ β€” здСсь вас ΠΆΠ΄ΡƒΡ‚ настоящиС Ρ‡Π΅Π»Π»Π΅Π½Π΄ΠΆΠΈ ΠΈ нСстандартныС практичСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. А Π΅Ρ‰Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ для ΠΏΠΎΡ€Ρ‚Ρ„ΠΎΠ»ΠΈΠΎ ΠΈ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½Ρ‹ΠΉ сапорт! πŸ“… Π‘Ρ‚Π°Ρ€Ρ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ ΡƒΠΆΠ΅ 29 августа 2024Π³. Доступна рассрочка Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

➑️ НАЧАВЬ Π’Π•Π‘Π’Π˜Π ΠžΠ’ΠΠΠ˜Π•

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘5❀2πŸ₯°2πŸ”₯1
Π§Π΅ΠΌ отличаСтся 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 Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ тэгами. Они выглядят ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Π½ΠΎ тСхничСски Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ с Π½ΠΈΠΌΠΈ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ.
πŸ‘10πŸ”₯4πŸŽ‰3❀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.
πŸ‘10πŸ”₯4
πŸ‘©β€πŸ’» Знакомство с Java Instrumentation API & Java agent

Π–Π΄Π΅ΠΌ вас Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅, Π³Π΄Π΅ Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Java Instrumentation API ΠΈ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ Π°Π³Π΅Π½Ρ‚Ρ‹. Π’ ΠΎΠ½Π»Π°ΠΉΠ½Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π°Π³Π΅Π½Ρ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ бизнСс-классов для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… trace-Π»ΠΎΠ³ΠΎΠ² для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ прилоТСния.

Π’Π΅Π±ΠΈΠ½Π°Ρ€ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°ΡŽΡ‚ΡΡ с вопросами ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ПослС занятия Π²Ρ‹ смоТСтС ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Java-Π°Π³Π΅Π½Ρ‚Ρ‹ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ прСдставлСниС ΠΎ возмоТностях Java Instrumentation API.

ВстрСчаСмся 22 августа Π² 20:00 мск.

Π‘ΠΏΠΈΠΊΠ΅Ρ€ β€” Tech Lead Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠΈΡ… российских Π±Π°Π½ΠΊΠΎΠ² ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ тСхничСских Π½Π°ΡƒΠΊ.

πŸ‘‰ Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ΡΡŒ Π½Π° Π²Π΅Π±ΠΈΠ½Π°Ρ€ ΠΈ ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ свои Π½Π°Π²Ρ‹ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Java: https://vk.cc/czjaBZ

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘6πŸ”₯4❀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.
1πŸ‘23πŸ”₯3❀1
πŸ‘©β€πŸ’» ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π² Java β€” Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ эффСктивно с Π½ΠΈΠΌΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ?

Π–Π΄Π΅ΠΌ вас Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅, Π³Π΄Π΅ ΠΌΡ‹ познакомимся с ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Ρ‚Π΅ΠΌ языка Java β€” ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΡ (Generics).
Π˜Π·ΡƒΡ‡ΠΈΠΌ, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π² стандартной Java-Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм ΠΊΠΎΠ΄Π΅.

ВстрСчаСмся 21 августа Π² 20:00 мск.

Π‘ΠΏΠΈΠΊΠ΅Ρ€ АлСксандр Ѐисунов β€” Senior Kotlin Developer Π² SSP Software Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π’Π’Π‘, ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ‚ тСхничСских Π½Π°ΡƒΠΊ.

πŸ‘‰ Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мСроприятиС: https://vk.cc/czoA2D

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘3❀2πŸ”₯2
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Reflection ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ?

Reflection, рСфлСксия – это срСдства манипуляции Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π½Π° основС знания ΠΎ структурС классов этих Π΄Π°Π½Π½Ρ‹Ρ…, инструмСнты мСтапрограммирования.

Класс Class<T> ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° Π² ΠΌΠΈΡ€ Ρ€Π΅Ρ„Π»Π΅ΠΊΡˆΠ΅Π½Π°. Π•Π³ΠΎ экзСмпляры ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ саму ΠΌΠ΅Ρ‚Π°ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ содСрТимом класса ΠΈ основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ. ВсС классы относящиСся Java Reflection находятся Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… java.lang ΠΈ java.lang.reflect.

ЭкзСмпляр класса Class ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ трСмя способами:
πŸ”˜ Π›ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠΌ .class;
πŸ”˜ БтатичСским Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Class.forName();
πŸ”˜ ΠœΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ getClass() экзСмпляров класса.

ИспользованиС Reflection API ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎΠ΅ ΠΈ нСбСзопасноС. Оно позволяСт Π»ΠΎΠΌΠ°Ρ‚ΡŒ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ состояний экзСмпляра, Π½Π°Ρ€ΡƒΡˆΠ°Ρ‚ΡŒ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ, ΠΈ Π΄Π°ΠΆΠ΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ поля.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Ρ„Π»Π΅ΠΊΡΠΈΡŽ СстСствСнно Π² тСстовом ΠΊΠΎΠ΄Π΅, Π² инструмСнтах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π² Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ… (особСнно Π² связкС с runtime-аннотациями). Π Π΅Ρ„Π»Π΅ΠΊΡˆΠ½ Π² ΠΎΡ€Π΄ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ бизнСс-ΠΊΠΎΠ΄Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… проСктирования.

НСрСдко Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ просят ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования Ρ€Π΅Ρ„Π»Π΅ΠΊΡˆΠ½Π°. Один ΠΈΠ· самых Π±Π»ΠΈΠ·ΠΊΠΈΡ… для backend-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² – инициализация классов-ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΉ Π² Spring Framework. Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Ρ„Π»Π΅ΠΊΡˆΠ½Π° сканируСт внутрСнности Ρ‚Π°ΠΊΠΈΡ… классов. Поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ аннотациями, Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ объявлСния элСмСнтов экосистСмы Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°.
πŸ‘17πŸ‘3❀2
Π’ Ρ‡Ρ‘ΠΌ отличия интСрфСйса ΠΎΡ‚ абстрактного класса?

Π“Π»Π°Π²Π½ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ – это сСмантика. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡ‹ появились Π΅Ρ‰Π΅ Π΄ΠΎ Java, ΠΊΠ°ΠΊ ваТная концСпция ООП. Бмысл интСрфСйса – Π½Π΅ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, описаниС свойства. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ Ссли ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° сСгрСгации интСрфСйсов, это описаниС СдинствСнного аспСкта повСдСния.

Класс, Π΄Π°ΠΆΠ΅ абстрактный – это комбинация всСх свойств ΠΈ ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ сущности Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (собствСнно, класса).

ΠžΡ‚ΡΡŽΠ΄Π° Π²Ρ‹Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ Π΅ΡΡ‚Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ мноТСствСнного наслСдования для интСрфСйсов. ΠžΠΏΡ‹Ρ‚ Ρ‚Π°ΠΊΠΈΡ… языков ΠΊΠ°ΠΊ C++ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ мноТСствСнноС наслСдованиС классов Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ (см. ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€ΠΎΠΌΠ±ΠΎΠ²ΠΈΠ΄Π½ΠΎΠ³ΠΎ наслСдования). По Ρ„Π°ΠΊΡ‚Ρƒ ΠΆΠ΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ всСго лишь ΠΏΠ΅Ρ€Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ Π½Π΅ относится ΠΊ ООП ΠΈ рСализуСтся Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… языках «интСрфСйсами с нСзависимым состояниСм» – примСсями.
Π’ Java интСрфСйс Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ абстрактного класса Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ состояния. РСализация повСдСния ΠΆΠ΅ допустима Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π΄Π²ΡƒΡ… случаях: для статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΈ default для ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ…. БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ всСго класса, Π° Π½Π΅ экзСмпляров. ДСфолтная рСализация, ΠΊΠ°ΠΊ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Ρ€Π°Π½Π΅Π΅, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠ°ΠΊ Ρ…Π°ΠΊ для сохранСния совмСстимости.

Π’ интСрфСйсах, ΠΊΠ°ΠΊ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Ρ… описаниях, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысла ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹ Π½Π΅ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹. ΠžΡ‚ΡΡŽΠ΄Π° синтаксичСскоС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅: ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ public, ΠΊΠ°ΠΊ ΠΈ abstract для ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ»ΠΈ static для ΠΏΠΎΠ»Π΅ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ. Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Ρ‹ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, нСсовмСстимыС с abstract: final, synchronized ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅.

На ΡƒΡ€ΠΎΠ²Π½Π΅ скомпилированного Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π° Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ нСбольшиС различия: интСрфСйс помСчаСтся Ρ„Π»Π°Π³ΠΎΠΌ ACC_INTERFACE Π° для класса гСнСрируСтся конструктор ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

И Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ нСбольшоС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ с ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΈ ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Для абстрактного класса Π΄Π°ΠΆΠ΅ с СдинствСнным ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Ρ‚Π°ΠΊΠΎΠ΅ Π½Π΅ сработаСт.
πŸ‘18πŸ”₯2
ΠœΠ΅Ρ‡Ρ‚Π°Π΅ΡˆΡŒ ΠΎ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π΅ Π² Π±ΠΈΠ³Ρ‚Π΅Ρ…Π΅?

ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈ Π½Π° интСнсив Π² ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΡˆΠΊΠΎΠ»Ρ‹ Π’1 для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² с ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ ΠΎΡ‚ Π³ΠΎΠ΄Π°. Π›ΡƒΡ‡ΡˆΠΈΠ΅ выпускники ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΎΡ„Ρ„Π΅Ρ€ ΠΎΡ‚ Π’1 β€” ΠΊΡ€ΡƒΠΏΠ½Π΅ΠΉΡˆΠ΅ΠΉ ИВ-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠΎ вСрсии RAEX 2023πŸ” ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Π½Ρ‹ΠΉ фаст-Ρ‚Ρ€Π΅ΠΊ Π΄ΠΎ ΠΌΠΈΠ΄Π»Π° Π² Π±ΠΈΠ³Ρ‚Π΅Ρ…Π΅.

Π’ ΠΏΠΎΡ€Ρ‚Ρ„Π΅Π»Π΅ Π₯ΠΎΠ»Π΄ΠΈΠ½Π³Π° Π’1 800+ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ 70+ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² ΠΈ услуг.

🧠 ВсСго Π·Π° ΠΏΠΎΠ»Π³ΠΎΠ΄Π° ΠΌΡ‹ выпустили 500+ спСциалистов. Участники ΠΏΡ€ΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈΡΡŒ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ Ρ„ΠΈΠ½Ρ‚Π΅Ρ…-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ИВ-ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Выпускников Ρ‚Π°ΠΊΠΆΠ΅ ΠΆΠ΄ΡƒΡ‚ Π² ΡŽΠ½ΠΈΡ‚Π°Ρ… ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Ρ… сСрвисов, развития ИИ-Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ консалтинга.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° курса: spring framework; docker; синхронноС ΠΈ асинхронноС взаимодСйствиС, Π±Ρ€ΠΎΠΊΠ΅Ρ€Ρ‹ сообщСний; ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, SOLID.

βŒ›οΈ БыстроС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅: 1 мСсяц.
πŸ’»Π“ΠΈΠ±ΠΊΠΈΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚: всС этапы ΠΎΠ½Π»Π°ΠΉΠ½, занятия ΠΏΠΎ Π²Π΅Ρ‡Π΅Ρ€Π°ΠΌ.

Π“ΠΎΡ‚ΠΎΠ² ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ вмСстС с экспСртами индустрии? Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ΄Π°Π²Π°ΠΉ заявку Π΄ΠΎ 22 августа!

Π‘Ρ‚Π°Ρ€Ρ‚ интСнсива β€” 28 августа.

РСклама. ООО "В1". ИНН 7720484492.
πŸ‘5❀3πŸ‘3😱1
Π§Ρ‚ΠΎ Ссли ΠΎΠ±Π° Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… интСрфСйса ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄?

Если объявлСниС ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ
– Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, класс-рСализация Π΄ΠΎΠ»ΠΆΠ΅Π½ просто ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄.

Когда Ρƒ ΠΎΠ±ΠΎΠΈΡ… интСрфСйсов ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ сигнатурой, Π½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ – всё зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ эти Ρ‚ΠΈΠΏΡ‹.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° (override) Π΅Ρ‰Π΅ с Java 5 ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π² наслСдникС Ρ‚ΠΈΠΏ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ наслСдником: super ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Number,
@Override ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Integer.

Если Ρ‚ΠΈΠΏΡ‹ Π½Π΅ связаны ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ наслСдования, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ String ΠΈ Long – Ρ‚Π°ΠΊΠΎΠΉ класс Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ.

Для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ковариантности Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π½Π΅Ρ‚. Π”Π°ΠΆΠ΅ Ссли Ρ‚ΠΈΠΏΡ‹ совмСстимы ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ присваивания: intβ†’long, intβ†’Integer. Π’ любом ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… случаСв Π±ΡƒΠ΄Π΅Ρ‚ ошибка ΠΎ нСсовмСстимости Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²ΠΎΠ² ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ Π² точности.

Если Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² части throws, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ. ΠŸΡ€Π°Π²ΠΈΠ»Π° здСсь Ρ‚Π΅ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ для Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² – Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ. ΠžΡ‚Π»ΠΈΡ‡ΠΈΠ΅ лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚, Π° Π΄Π°ΠΆΠ΅ для Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΈ наслСдником ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ всСгда Π΅ΡΡ‚ΡŒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠΈΠΌ – отсутствиС выбрасываСмых ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ Π²ΠΎΠΎΠ±Ρ‰Π΅.
1πŸ‘17❀6πŸ”₯5
⁉️ Spring Security β€” Alohomora для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²

Π₯ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ Π½Π°Π²Ρ‹ΠΊ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…?

Π–Π΄Π΅ΠΌ вас Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Π²Π΅Π±ΠΈΠ½Π°Ρ€Π΅ 27 августа Π² 20:00 мск, Π³Π΄Π΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ:

- основы Spring Security;
- ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Spring Security для Π·Π°Ρ‰ΠΈΡ‚Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ бСзопасности ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²;
- ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Π³ΠΈΠΈ Β«AlohomoraΒ» для открытия Π·Π°ΠΏΠ΅Ρ€Ρ‚Ρ‹Ρ… Π΄Π²Π΅Ρ€Π΅ΠΉ Π² ΠΌΠΈΡ€Π΅ бСзопасности.

Π£Ρ€ΠΎΠΊ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Java- ΠΈ Kotlin-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

ВстрСчаСмся Π² ΠΏΡ€Π΅Π΄Π΄Π²Π΅Ρ€ΠΈΠΈ старта курса Β«Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° Spring FrameworkΒ».
ВсС участники Π²Π΅Π±ΠΈΠ½Π°Ρ€Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ†Π΅Π½Ρƒ Π½Π° ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅!

πŸ‘‰ Π Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ прямо сСйчас, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мСроприятиС: https://vk.cc/czBsnn

Π Π΅ΠΊΠ»Π°ΠΌΠ°. ООО Β«ΠžΡ‚ΡƒΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠžΠ“Π Π 1177746618576, www.otus.ru
Please open Telegram to view this post
VIEW IN TELEGRAM
1πŸ‘3πŸ”₯2
Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ поля?

Π‘Ρ‚ΠΎΠΈΡ‚ сразу ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, это ΠΎΡ‡Π΅Π½ΡŒ плохая ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°. Π’Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠ±ΠΎ Π½Π°Ρ€ΡƒΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ сокрытия Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π»ΠΎΠΌΠ°Π΅Ρ‚ ΠΈΠ½Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Для этого Ρ‚Ρ€ΡŽΠΊΠ° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΡ‚ΡŒ ΠΊ использованию Reflection API.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ дСскриптор поля – экзСмпляр класса Field. Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° мСтакласса Class<X> ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅Π³ΠΎ нас класса Π²Ρ‹Π·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ getDeclaredField(). ΠŸΡ€ΠΎΡΡ‚ΠΎ getField() Π½Π΅ сработаСт, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ полями. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ пСрСдаСтся строка с ΠΈΠΌΠ΅Π½Π΅ΠΌ поля.

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ экзСмпляра Field ΡƒΠΆΠ΅ достаточно для доступа ΠΊ измСняСмым ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ полям. ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ трСбуСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ доступным, Π²Ρ‹Π·Π²Π°Π² setAccessible(true).

Π‘Π°ΠΌ доступ осущСствляСтся ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ get*() ΠΈ set*(). Π’Π°ΠΊ ΠΊΠ°ΠΊ Field прСдставляСт дСскриптор поля класса, Π±Π΅Π· привязки ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ экзСмпляру класса, экзСмпляр пСрСдаСтся ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ доступа. Для статичСского поля пСрСдаСтся null.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ±ΠΎΡ€ΠΎΡ‚ΡŒ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡ‚ΡŒ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ поля, Π½ΡƒΠΆΠ½ΠΎ ΡΠ½ΡΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ final. ВсС ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ поля хранятся Π² ΠΏΠΎΠ»Π΅ modifiers дСскриптора. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π΅Ρ„Π»Π΅ΠΊΡˆΠ΅Π½Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ доступным ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅ ΡƒΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Field.

ПолС modifiers Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ маски. Для измСнСния придСтся ΠΏΡ€ΠΈΠ±Π΅Π³Π½ΡƒΡ‚ΡŒ ΠΊ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ.

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ установки значСния 42 Π² ΠΏΠΎΠ»Π΅ myField ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° myObject выглядит Ρ‚Π°ΠΊ:

Field field = myObject.class.getDeclaredField( "myField" );
field.setAccessible( true );
Field modifiersField = Field.class.getDeclaredField( "modifiers" );
modifiersField.setAccessible( true );
modifiersField.setInt( field, field.getModifiers() & ~Modifier.FINAL );
field.setInt(myObject, 42);
πŸ”₯12πŸ‘5❀1
This media is not supported in your browser
VIEW IN TELEGRAM
CΠ°ΠΌΡ‹ΠΉ простой способ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Java β€” Π·Π°Π»Π΅Π·Ρ‚ΡŒ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ ΠΏΡ€ΠΎΡ„ΠΈ

Один ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Π°ΠΉΡ‚ΠΈΡˆΠ½ΠΈΠΊΠΎΠ² России ΡƒΡ‡ΠΈΡ‚ Π±Π°Π·Π΅ ΠΊΠΎΠ΄ΠΈΠ½Π³Π° Π² Telegram. Π”Π°ΠΆΠ΅ Π³ΡƒΠΌΠ°Π½ΠΈΡ‚Π°Ρ€ΠΈΠΉ ΠΏΠΎΠΉΠΌΡ‘Ρ‚, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ прилоТСния, сайты, ΠΈΠ³Ρ€Ρ‹ ΠΈ Ρ‡Π°Ρ‚-Π±ΠΎΡ‚Ρ‹.

Достаточно ΠΏΠΎΠ΄ΠΏΠΈΡΠ°Ρ‚ΡŒΡΡ Π½Π° Β«Π‘Π΅ΠΊΡ€Π΅Ρ‚Ρ‹ JavaΒ», Π³Π΄Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π³Π°ΠΉΠ΄Ρ‹, Π³ΠΎΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° ΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ.

И всё это бСсплатно β€” вмСсто сотСн тысяч Ρ€ΡƒΠ±Π»Π΅ΠΉ Π·Π° курсы. Π‘Ρ‚Π°Ρ€Ρ‚ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒΠ½ΠΎΠΉ профСссии с нуля Π²Ρ‹ смоТСтС Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅!

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ Java ΠΌΠΎΠΆΠ΅Ρ‚ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ: @java_secrets
πŸ‘3
Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ стримы?

ΠŸΠ°ΠΊΠ΅Ρ‚ java.util.stream – это срСдства ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌ стилС. Они Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ (ΠΊΡ€ΠΎΠΌΠ΅ названия) с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ примСнСния – конвСртация, ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, ΠΈ агрСгация Π΄Π°Π½Π½Ρ‹Ρ….

Π’Ρ€ΠΈ основных понятия Java Stream API – источник Π΄Π°Π½Π½Ρ‹Ρ…, промСТуточная (intermediate), ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ (terminal) ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠ»ΠΈ динамичСский Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ бСсконСчный. Π‘Π°ΠΌ источник Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ модифицируСтся ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ опСрациями.

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ стрим. На ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сколько ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ опСрация «потрСбляСт» ΠΏΠΎΡ‚ΠΎΠΊ. Она ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π°, Π² ΠΊΠΎΠ½Ρ†Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ взятым стримом. Π‘Ρ‚Ρ€ΠΈΠΌΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π»Π΅Π½ΠΈΠ²ΠΎ – вся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ Π½Π°Ρ‡Π½Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ.

Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования стримов – map-reduce. Map – промСТуточная опСрация, reduce – Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Π°Ρ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ характСристик ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свойства – элСмСнты пСрСчислСния StreamOpFlag:
β€’ SORTED – ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ элСмСнты;
β€’ ORDERED – ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ порядок ΠΎΠ±Ρ…ΠΎΠ΄Π°;
β€’ DISTINCT – содСрТит ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, Π±Π΅Π· Π΄ΡƒΠ±Π»Π΅ΠΉ;
β€’ SIZED – ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€;
β€’ SHORT_CIRCUIT – опСрация, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌΡƒ Π·Π°ΠΌΡ‹ΠΊΠ°Π½ΠΈΡŽ.
πŸ‘13πŸ”₯6
ΠŸΡ€ΠΈΠ²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ со стримами

Π‘Π°ΠΌΡ‹Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅
πŸ‘27πŸ”₯7