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

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

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

ΠœΡ‹ Π½Π° Π±ΠΈΡ€ΠΆΠ΅: telega.in/channels/javatasks/card?r=lcDuijdm
Download Telegram
Как ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ интСрфСйса?

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс – всё Π΅Ρ‰Ρ‘ интСрфСйс, поэтому ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ доступными стандартныС способы. Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ классом, ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ экзСмпляр ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ new. МоТно ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ эти Π΄Π²Π° дСйствия, ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ класса.

ОсновноС прСимущСство, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс – Π΄Π²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… способа ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

1. Лямбда-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: (x, y) -> x * y
2. Бсылка Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄: Math::sqrt

На эти способы накладываСтся нСбольшоС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅: Ρ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°/ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ явно. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ лямбдой ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄-рСфСрСнсом нСльзя ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом var. Π’Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ лямбду ΠΈΠ»ΠΈ рСфСрСнс Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ generic-Ρ‚ΠΈΠΏΠ°, этот Ρ‚ΠΈΠΏ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ интСрфСйсом (Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡ‚ΠΈΡ€Π°Ρ‚ΡŒΡΡ Π² Π½Π΅Π³ΠΎ).


@javatasks #java
πŸ”₯11πŸŽ‰3❀2
Π—Π°Π΄Π°Ρ‡ΠΈ с собСсСдований: ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, являСтся Π»ΠΈ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ поиска (middle)

β€” Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎΠΌ поиска (BST)?

πŸ“Œ ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹:

- Π‘ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ поиска (BST) β€” это Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° всС значСния Π² Π»Π΅Π²ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π΅ мСньшС значСния ΡƒΠ·Π»Π°, Π° всС значСния Π² ΠΏΡ€Π°Π²ΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π΅ большС.
- Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСкурсивный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ с отслСТиваниСм допустимых Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠ² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°.
- Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π»ΡŽΠ±Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡƒΠ·Π»Π°Ρ… Π΄Π΅Ρ€Π΅Π²Π°?

РСализация с числами Π² ΡƒΠ·Π»Π°Ρ… Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ πŸ‘†

@javatasks #java
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘12πŸ”₯5❀3
Какой ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π² Аpache Kafka ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° сохранСниС сообщСний Π² Ρ‚ΠΎΠΏΠΈΠΊΠ°Ρ…?
Anonymous Quiz
10%
Consumer
20%
Producer
47%
Broker
17%
Zookeeper
6%
Controller
πŸ”₯10πŸ‘5🌚2😐2
πŸ“ŽΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ѐасад (Facade)

Ѐасад β€” это структурный ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ слоТных подсистСм. Он скрываСт ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ систСмы ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ взаимодСйствиС с Π½Π΅ΠΉ, прСдоставляя Π±ΠΎΠ»Π΅Π΅ простой ΠΈ понятный API для ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ИспользованиС:

🟑 Когда систСма состоит ΠΈΠ· мноТСства классов, ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ доступ ΠΊ Π΅Ρ‘ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ.
🟑 Когда Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ Π΅Π΄ΠΈΠ½Ρ‹ΠΉ интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с нСсколькими подсистСмами.
🟑 Когда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ ΠΈ слоТной систСмой, скрыв Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

1️⃣ Π£ΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ взаимодСйствиС с комплСксной систСмой, прСдоставляя ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ интСрфСйс.
2️⃣ Π‘Π½ΠΈΠΆΠ°Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов подсистСм, облСгчая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΈ тСстированиС.
3️⃣ Π£ΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ количСство Ρ‚ΠΎΡ‡Π΅ΠΊ взаимодСйствия с систСмой, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ошибок ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹.

НСдостатки:

1️⃣ ΠœΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ограничивая возмоТности систСмы.
2️⃣ Π£Π²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство ΠΊΠΎΠ΄Π° Π·Π° счёт добавлСния Π½ΠΎΠ²ΠΎΠ³ΠΎ фасадного класса.
3️⃣ Если фасад слишком абстрактСн, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ слоТным для понимания ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

πŸ“Œ ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Ѐасад ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ нСсколько подсистСм ΠΏΠΎΠ΄ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ‰ΠΈΠΉ интСрфСйс, дСлая систСму Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈ простой для использования. НапримСр, ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠΌΠΈ слоТной настройки, ΠΈΠ»ΠΈ Π² ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π³Π΄Π΅ взаимодСйствиС с мноТСством ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΌ. Ѐасад ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ удобство Ρ€Π°Π±ΠΎΡ‚Ρ‹ с систСмой.

βœ… Java Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° #java
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘17❀3πŸ”₯2
Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ статичСски?

ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ ΠΈΠΌΠΏΠΎΡ€Ρ‚ избавляСт ΠΎΡ‚ нСобходимости ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя классов: ΠΏΡ€ΠΈ использовании ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚. БтатичСскиС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Π½ΠΎ для статичСских Ρ‡Π»Π΅Π½ΠΎΠ² класса.

Π‘Π°ΠΌΠΎΠ΅ распространСнноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ статичСского ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° – Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ констант ΠΈΠ· константных интСрфСйсов ΠΈ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ· ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ€Π½Ρ‹Ρ… классов. Но Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈ измСняСмыС статичСскиС поля Π΄Ρ€ΡƒΠ³ΠΈΡ… классов.

ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ интСрСсСн случай nested-класса. Он ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ являСтся ΠΈ классом, ΠΈ статичСским Ρ‡Π»Π΅Π½ΠΎΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для Π½Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΈ статичСский ΠΈΠΌΠΏΠΎΡ€Ρ‚.

Языковая конструкция static import обязана Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΌ ΠΆΠ΅, Π³Π΄Π΅ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ – ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ package ΠΈ объявлСниСм основного класса Ρ„Π°ΠΉΠ»Π°.


Java GuruπŸ€“ #java
πŸ”₯9πŸ‘5❀4
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?
πŸ‘8πŸ”₯2πŸ‘2
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
24%
Ошибка компиляции
4%
RuntimeException
59%
1 2 3 4
3%
1| 2| 3| 4|
10%
ClassCastException
πŸ‘14πŸ”₯2❀1
Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово super?

Как ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, super ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² зависимости ΠΎΡ‚ контСкста:

1. Π—Π°Π΄Π°Ρ‚ΡŒ ниТнюю Π³Ρ€Π°Π½ΠΈΡ†Ρƒ generic-Ρ‚ΠΈΠΏΠ°: Consumer<? super Number>
2. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ‡Π»Π΅Π½Ρƒ класса-родитСля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ (shadowed) Ρ‡Π»Π΅Π½Π°ΠΌΠΈ наслСдника ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ: int foo =
super.foo
3. Π’Ρ‹Π·Π²Π°Ρ‚ΡŒ Π² конструкторС конструктор родитСля: SubClass() { super("subclass param"); }
4. Π’ случаС нСопрСдСлСнности, ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Ρ‚ΠΈΠΏ (Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅)


Java GuruπŸ€“ #java
πŸ‘14❀4πŸ”₯3
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?
πŸ‘6πŸ”₯6πŸ₯΄4
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
35%
Ошибка компиляции
5%
Java Top!
42%
Jao
8%
Jv T!
11%
RuntimeException
πŸ”₯12πŸ‘6
МоТно Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄?

ΠžΡ‚Π²Π΅Ρ‡Π°Ρ Π½Π° этот вопрос, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π°ΠΊΠΊΡƒΡ€Π°Ρ‚Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈ пСрСопрСдСлСния.

На ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ (overload) статичСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ накладываСтся Π½ΠΈΠΊΠ°ΠΊΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния компилятора, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ с Ρ€Π°Π·Π½Ρ‹ΠΌ списком Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² – Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Но это Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ static относится ΠΊ классу, Π° Π½Π΅ ΠΊ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ. Для Π½Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ статичСскоС связываниС, поэтому ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ (override) Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

НСсмотря Π½Π° это, Π² Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΌ классС ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ static ΠΌΠ΅Ρ‚ΠΎΠ΄ с Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅ сигнатурой, ΠΊΠ°ΠΊ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΌ. Π’ этом случаС ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π° ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ (shadowing). К Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ нСльзя ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΡŽ
@Override, Π² Π½Ρ‘ΠΌ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово super.

Если Π²Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π½Π΅ Ρ‚ΠΈΠΏΠ°, ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Ρ‚Π°ΠΈΡ‚ Π² сСбС ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Π‘Π΅Π· динамичСского связывания компилятор Π·Π½Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ Π½Π΅ ΠΎ Ρ‚ΠΈΠΏΠ΅ Π΅Π΅ значСния. Если ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ – Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс, Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄-ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ вызовСтся. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° Π² IDE ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.


Java GuruπŸ€“ #java
πŸ‘19πŸ”₯4❀2
Как Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹?

β€’ ΠšΠ»Π°ΡΡΡ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° доступны Π±Π΅Π· ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Если импортируСтся Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΠΈΠΉ с классом-сосСдом ΠΏΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ – сосСд пСрСкрываСтся. Π‘ΡƒΠ΄Π΅Ρ‚ использован ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс, Π±Π΅Π· ошибки.

β€’ Если Π² class-Ρ„Π°ΠΉΠ»Π΅ сущСствуСт нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… классов с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… здСсь ΠΆΠ΅ ΠΈΠ»ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… – это ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС компиляции.

β€’ Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ класс нСсколько Ρ€Π°Π· допускаСтся. Π‘ΡƒΠ΄Π΅Ρ‚ всСго лишь warning ΠΎ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅.

β€’ Для статичСских ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² констант Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈ статичСскиС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ – для Π²Ρ‹Π±ΠΎΡ€Π° достаточно контСкста использования.

β€’ Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ нСсколько классов/констант с ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅, придСтся ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ². НуТно Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΈΡ… ΠΏΠΎΠ»Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ, с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚Π°.
πŸ‘12πŸ”₯4
Π’ Ρ‡Π΅ΠΌ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΈΠ²Π°Ρ‚Π½Ρ‹ΠΌ конструктором ΠΈ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ классом?

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ области видимости конструктора Π΄ΠΎ private Π½Π΅ Π΄Π°Π΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· наслСдника, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСвозмоТности Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΎ свойство часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ€Π½Ρ‹Ρ… классов ΠΈ синглтонов. Если ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ инстанцирования ΠΈΠ·Π²Π½Π΅.

Если Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ объявлСнию класса ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ final, это Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ ΠΎΡ‚ Π½Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ, ΡƒΠΆΠ΅ Π±Π΅Π· излишнСго ограничСния Π½Π° использованиС конструктора снаруТи. Π­Ρ‚ΠΎ основноС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ этих Π΄Π²ΡƒΡ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния возмоТности наслСдования, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ€Π΅Π· private конструктор Π±ΠΎΠ»Π΅Π΅ слабоС. ΠžΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ класса, Ссли ΠΎΠ½ Π½Π΅ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ подклассы. ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Β«ΠΏΠ°Π±Π»ΠΈΠΊ ΠΌΠΎΡ€ΠΎΠ·ΠΎΠ²Β» – Π΄Π°Ρ‚ΡŒ внСшним классам Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Π΅Ρ€Π΅Π· сСбя.


Java GuruπŸ€“ #java
πŸ‘18πŸ”₯4❀3
Когда Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ raw types?

Π‘Π½Π°Ρ‡Π°Π»Π° вспомним, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ raw type. Π’ Java Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ generic-Ρ‚ΠΈΠΏΡ‹ Π±Π΅Π· указания Ρ‚ΠΈΠΏΠ°-ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Вакая языковая конструкция Π²Π°Π»ΠΈΠ΄Π½Π°, Π½ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΡŽ компилятора.

ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ связано с риском получСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ heap pollution. Π•ΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ посвящали ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ
Ρ€Π°Π½Π΅Π΅. ИспользованиС raw types Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½ΠΎ – спСцификация языка явно Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚: ΠΈΡ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости.

Π•ΡΡ‚ΡŒ всСго Ρ‚Ρ€ΠΈ случая, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ:
β€’ ЦСлСвая вСрсия Java < 5.0 (2002 Π³ΠΎΠ΄ ΠΈ Ρ€Π°Π½Π΅Π΅ – вряд Π»ΠΈ это ваш случай);
β€’ Π’ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π΅ класса. List<String>.class Π½Π΅ сработаСт, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ List.class;
β€’ Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ instanceof. ВмСсто instanceof Set<Integer> Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ instanceof Set.


Java GuruπŸ€“ #java
πŸ”₯11πŸ‘4❀1
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ со ссылкой Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄, Ссли Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°?

ΠžΡ‚Π²Π΅Ρ‚ Π½Π° этот вопрос Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½, Ссли Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ скрываСтся Π·Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°ΠΌΠΈ ссылки Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΈ ссылки Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄.

Для нСстатичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ связываниС. По этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ обращаСмся ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ ΠΏΠΎ ссылкС, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ экзСмпляра, Π° Π½Π΅ Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ с изобраТСния Π½ΠΈΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ класса A Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€ΠΎΠ½ΡƒΡ‚.

Π€Π°ΠΊΡ‚ ΠΏΠΎΠ·Π΄Π½Π΅Π³ΠΎ связывания Π² этом вопросС ΠΌΠΎΠΆΠ΅Ρ‚ ввСсти Π² Π·Π°Π±Π»ΡƒΠΆΠ΄Π΅Π½ΠΈΠ΅. БвязываниС случаСтся Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ обращСния, Π° Π½Π΅ Π²Ρ‹Π·ΠΎΠ²Π°. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ хранится нСизмСняСмая копия ссылки Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄. Она Π²Π΅Π΄Π΅Ρ‚ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π° Π½Π΅ хранящСй Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ пСрСприсвоСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΆΠ΅ Π½Π΅ ΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π° ссылку Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ эффСкта.

Для достиТСния Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ связывания Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹Π·ΠΎΠ²Π° Π² Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄Π΅ сущСствуСт инструкция invokedynamic. Однако Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ повСдСнчСский ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ООП, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, посСтитСля.


Java GuruπŸ€“ #java
πŸ‘12πŸ”₯4❀3
Как ΠΎΠ±ΠΎΠΉΡ‚ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ?

for/while. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ способ: цСлочислСнная пСрСмСнная-индСкс, которая увСличиваСтся ΠΎΡ‚ 0 Π΄ΠΎ size(). МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ…ΠΎΠ΄Π°, с нСстандартным шагом. ΠŸΠ»Π°Ρ‚Π° Π·Π° это – Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΈΡ‚ΡŒΡΡ Π² индСксах ΠΈ ΠΌΠ΅Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Iterator. ООП-способ: ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ iterator() ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρƒ Π½Π΅Π³ΠΎ next() ΠΏΠΎΠΊΠ° hasNext() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true. Π’ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, такая ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊΠΎΠΉ Β«ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽΒ» ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² сторонний ΠΊΠΎΠ΄, Π½Π΅ отдавая саму ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ. Всё Π΅Ρ‰Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ слишком ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

for Iterable. БинтаксичСский сахар для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠŸΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ синтаксис ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ΅Π½ просто ΠΎΠ±Ρ…ΠΎΠ΄. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ явного использования ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π½Π΅ Π΄Π°Π΅Ρ‚ возмоТности ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты Π² процСссС.

Π‘Ρ‚Ρ€ΠΈΠΌΡ‹. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ стрим ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с элСмСнтами Π² Π½Ρ‘ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ простого forEach(), ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ всСй ΠΌΠΎΡ‰ΡŒΡŽ Java Steam API – Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ Π°Π³Ρ€Π΅Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты. Π—Π° это ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ лишниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π° синтаксис Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ развСсистый.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Java 8. Π‘ этой вСрсии появились ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ срСдства для ΠΎΠ±Ρ…ΠΎΠ΄Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ строк. Π£ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ Ρ…ΡΡˆ-Ρ‚Π°Π±Π»ΠΈΡ† добавились ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ forEach для ΠΎΠ±Ρ…ΠΎΠ΄Π° ΠΈ replaceAll для ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Как со стримами, ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, Π½ΠΎ Π±Π΅Π· ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ создания стримов. Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ простыС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ Ρ†ΠΈΠΊΠ»Ρ‹ for.


Java GuruπŸ€“ #java
πŸ‘14❀6πŸ”₯4
ΠœΠΎΠΆΠ΅Ρ‚ Π»ΠΈ имя класса Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„Π°ΠΉΠ»Π°?

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² .java Ρ„Π°ΠΉΠ»Π΅ Π±Ρ‹Π» Π½Π΅ большС Ρ‡Π΅ΠΌ ΠΎΠ΄ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ класс Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ совпадало с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ„Π°ΠΉΠ»Π°. ВсС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°.

Protected ΠΈ private классов Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Π½Π΅ Π±Ρ‹Π²Π°Π΅Ρ‚ Π² ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ΅, Π° Π²ΠΎΡ‚ Π½Π° package-protected это ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ распространяСтся. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ класс Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ любоС имя. Π’Π°ΠΊΠΆΠ΅ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ рядом с основным ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ классом Ρ„Π°ΠΉΠ»Π° (ΠΈΠ»ΠΈ вмСсто Π½Π΅Π³ΠΎ) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ любоС количСство Π΄Ρ€ΡƒΠ³ΠΈΡ… классов Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° доступа, с ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ. Они Π±ΡƒΠ΄ΡƒΡ‚ доступны Π²Π½ΡƒΡ‚Ρ€ΠΈ всСго ΠΏΠ°ΠΊΠ΅Ρ‚Π°.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π²Π΅Ρ‚ – ΠΌΠΎΠΆΠ΅Ρ‚.


Java GuruπŸ€“ #java
πŸ‘15πŸ”₯4❀2🌚1
Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ компиляции этого ΠΊΠΎΠ΄Π°?
πŸ”₯6πŸ‘4
Как Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ стримы?

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

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

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

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

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

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

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


Java GuruπŸ€“ #java
πŸ‘7❀5πŸ”₯3