ΠΠ°ΠΊΠΈΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²?
Π JVM Π²ΡΡΡΠΎΠ΅Π½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°:
π Bootstrap β Π²ΡΡΡΠΎΠ΅Π½Π½Π°Ρ Π² JVM Π½Π°ΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠ². ΠΠ°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ°ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² java.*;
π Platform β ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π·Π°Π³ΡΡΠ·ΠΊΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Java-ΡΠ°Π½ΡΠ°ΠΉΠΌΠ°. ΠΠΎ Java 9 Π½Π°Π·ΡΠ²Π°Π»ΡΡ Extension ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΎΠΉ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ. ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ Π΅ΠΌΡ Π±ΡΠ΄ΡΡ Π²ΠΈΠ΄Π½Ρ (Π½ΠΎ Π½Π΅ ΡΠ°ΠΊΡ ΡΡΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠΌ) Π²ΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Java SE ΠΈ JDK;
π System (Application) β Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΠΊΠ»Π°ΡΡΡ ΠΈΠ· classpath ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ;
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΊΠ»Π°ΡΡ, ClassLoader ΠΏΡΠΎΠ²Π΅ΡΠΈΡ, Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π»ΠΈ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ ΡΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ΅Π½, ΡΠΎ Π·Π°Π³ΡΡΠ·ΠΊΠ° Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
ΠΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΡΠΌΡΡΠ»Π° ΡΡΠΎΠΉ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ β Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΈ web-ΡΠ΅ΡΠ²Π΅ΡΠ° Apache Tomcat. ΠΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΊΠ»Π°ΡΡ-singleton Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ. Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΈ ΠΎΠ±ΡΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΡΠΈ ΡΠΎΠΌ Π³ΡΡΠ·ΡΡΡΡ ΠΈΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌΠΈ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°ΠΌΠΈ, ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π΄Π»Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π 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
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. ΠΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ, Π½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Π½Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°ΡΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ ΡΠ°ΠΊΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ·ΠΈΡΡ Π½Π°Π±ΠΎΡ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄ΠΎΡΡΡΠΏΠ° Π½Π° ΠΌΠ΅Π½Π΅Π΅ ΡΡΡΠΎΠ³ΠΈΠΉ.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΈΡΡ.
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ β ΡΠΎΠ»Ρ ΠΠΠ. ΠΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° (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 Developer. AdvancedΒ» ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΈ ΡΠΈΡΠ°ΡΡ Π±Π°ΠΉΡ ΠΊΠΎΠ΄ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠΆΠ½ΠΎ. ΠΠ°ΡΡΠΈΡΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π±Π°ΠΉΡ ΠΊΠΎΠ΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π² runtime. ΠΡΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅ΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
ΠΠ΅Π±ΠΈΠ½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ 7 Π°Π²Π³ΡΡΡΠ° Π² 20:00 ΠΌΡΠΊ.
Π‘ΠΏΠΈΠΊΠ΅Ρ β Tech Lead Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΡ Π±Π°Π½ΠΊΠΎΠ² ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π½Π°ΡΠΊ.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
π₯°4π2π₯2
ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠΈΠ½Π³Π»ΡΠΎΠ½?
Singleton β ΡΡΠΎ ΠΏΠ°ΡΡΠ΅ΡΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Β«ΠΎΠ΄ΠΈΠ½ΠΎΡΠΊΠ°Β», ΠΊΠ»Π°ΡΡ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠΌ. Π’Π°ΠΊΠ°Ρ ΠΏΡΠΎΡΡΡΠ°Π½Π½Π°Ρ ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° ΠΎΡΠΊΡΡΠ²Π°Π΅Ρ ΠΏΡΠΎΡΡΠΎΡ Π΄Π»Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π° Π·Π½Π°ΡΠΈΡ ΠΈ Π΄Π»Ρ ΡΡΠΎΡΠ½ΡΡΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ², Π½Π° ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡΠ΅Ρ.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΡΠΎ Π½Π°Π΄ΠΎ Π²ΡΡΡΠ½ΠΈΡΡ β Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΡΠ΅Π³ΠΎ. Π Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΊΠ»Π°ΡΡΠ»ΠΎΠ°Π΄Π΅Ρ. ΠΠ»Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΠΈ Π½Π° Π²ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ. ΠΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΡΠΆΠ΅ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΠ‘ ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ JVM. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ΅ Π΄Π»Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΡΡΠΆΠ΅Π½ΠΈΠ΅ Β«ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΠΈΒ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Spring IoC-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Π±ΡΡΡ ΡΠΎΠ²Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ, ΠΈΠ»ΠΈ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π»ΠΈ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π±ΡΡΡ Π»Π΅Π½ΠΈΠ²ΡΠΌ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ Π²Π½Π΅ΡΠ½ΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ, ΠΈ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΡΠΈΠ»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½.
Π Π½Π°ΠΊΠΎΠ½Π΅Ρ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎΡΠ½ΠΈΡΡ, Π² ΠΊΠ°ΠΊΠΈΡ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²Π°Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅ΡΡΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ β ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ. ΠΡΡΠ³ΠΎΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ β ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΡ Π·Π°ΠΏΡΡΠΊΠ° ΠΊ Π·Π°ΠΏΡΡΠΊΡ. Π‘ΠΏΠ΅ΠΊΡΡ ΠΎΠΏΡΠΈΠΉ Π·Π΄Π΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π½ΡΠ°Π·ΠΈΠ΅ΠΉ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΡΡΡΠ΅Π³ΠΎ.
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Π³ . ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅.
β‘οΈ ΠΠΠ§ΠΠ’Π¬ Π’ΠΠ‘Π’ΠΠ ΠΠΠΠΠΠ
ΠΠ²Π° ΠΎΡΠΊΡΡΡΡΡ ΡΡΠΎΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π±Π΅Π· ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠ»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΎΡΠΊΡΡΡΡΠΌ ΡΡΠΎΠΊΠ°ΠΌ ΠΈΠ· ΠΊΡΡΡΠ° Β«Java Developer. ProfessionalΒ» ΠΎΡ OTUS Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΉΡΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° 20 Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΈ ΡΠ»ΠΎΠΆΠΈΡΡΡΡ Π² ΡΠ°ΠΉΠΌΠΈΠ½Π³.
π -
- ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ;
- ΠΎΡΠ½ΠΎΠ²Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ JVM (ΡΠ±ΠΎΡΠΊΠ° ΠΌΡΡΠΎΡΠ°, byteCode);
- ΠΏΡΠΈΠ΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ;
- ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ ΡΡΠΎΠ²Π½Ρ Middle+;
- ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Spring WebFlux, Kafka, ΡΠ΅Π°ΠΊΡΠΈΠ²Π½ΡΠΉ Postgres ΠΈ Kubernetes;
- Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠΈΡΠ΅ ΠΈ Π±ΡΡΡΡΠ΅Π΅.
ΠΠ°Π±ΡΠ΄ΡΡΠ΅ ΠΎ ΡΠΊΡΡΠ½ΠΎΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠΈ β Π·Π΄Π΅ΡΡ Π²Π°Ρ ΠΆΠ΄ΡΡ Π½Π°ΡΡΠΎΡΡΠΈΠ΅ ΡΠ΅Π»Π»Π΅Π½Π΄ΠΆΠΈ ΠΈ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ. Π Π΅ΡΠ΅ ΡΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ ΠΈ ΠΊΠ°ΡΡΠ΅ΡΠ½ΡΠΉ ΡΠ°ΠΏΠΎΡΡ!
β‘οΈ ΠΠΠ§ΠΠ’Π¬ Π’ΠΠ‘Π’ΠΠ ΠΠΠΠΠΠ
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 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 Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ³Π°ΠΌΠΈ. ΠΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½ΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Ρ Π½ΠΈΠΌΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ.
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±Π°Ρ Π³ΡΡΠΏΠΏΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° β 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.
ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π΅ ΡΠ΅ΠΌΡ. ΠΠ΅ΡΠ²Π°Ρ β ΠΊΠ»Π°ΡΡ 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 ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ Π½ΡΠΆΠ½Ρ Π°Π³Π΅Π½ΡΡ. Π ΠΎΠ½Π»Π°ΠΉΠ½Π΅ ΠΈΠ·ΡΡΠΈΠΌ Π°Π³Π΅Π½Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠ΄ Π±ΠΈΠ·Π½Π΅Ρ-ΠΊΠ»Π°ΡΡΠΎΠ² Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ trace-Π»ΠΎΠ³ΠΎΠ² Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅Π±ΠΈΠ½Π°Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ Ρ Π²ΠΎΠΏΡΠΎΡΠ°ΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΠΎΡΠ»Π΅ Π·Π°Π½ΡΡΠΈΡ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ Java-Π°Π³Π΅Π½ΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, Π° ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Java Instrumentation API.
ΠΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ 22 Π°Π²Π³ΡΡΡΠ° Π² 20:00 ΠΌΡΠΊ.
Π‘ΠΏΠΈΠΊΠ΅Ρ β Tech Lead Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΡ Π±Π°Π½ΠΊΠΎΠ² ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π½Π°ΡΠΊ.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 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.
Π 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 β ΠΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ (Generics).
ΠΠ·ΡΡΠΈΠΌ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ, Π³Π΄Π΅ ΠΎΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Java-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ 21 Π°Π²Π³ΡΡΡΠ° Π² 20:00 ΠΌΡΠΊ.
Π‘ΠΏΠΈΠΊΠ΅Ρ ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π€ΠΈΡΡΠ½ΠΎΠ² β Senior Kotlin Developer Π² SSP Software Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΠ’Π, ΠΎΠΏΡΡΠ½ΡΠΉ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΈ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°Ρ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΡ Π½Π°ΡΠΊ.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 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. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠ½Π° ΡΠΊΠ°Π½ΠΈΡΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠΎΠ»Ρ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ, Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°.
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 Π° Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π Π΅ΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ, ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΠΈΡΠΎΠ²Π°ΡΡ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ»Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π΄Π°ΠΆΠ΅ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ°ΠΊΠΎΠ΅ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ»Π°Π²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ β ΡΡΠΎ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°. ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π΅ΡΠ΅ Π΄ΠΎ 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.
ΠΡΠΈΡ ΠΎΠ΄ΠΈ Π½Π° ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ² Π² ΠΡΠΊΡΡΡΡΠ΅ ΡΠΊΠΎΠ»Ρ Π’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, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΠΈΠΌΠΈ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠ°Π²ΠΈΠ»Π° Π·Π΄Π΅ΡΡ ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ² β ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ. ΠΡΠ»ΠΈΡΠΈΠ΅ Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π½Π΅ Π±ΡΠ²Π°Π΅Ρ, Π° Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠΉ ΠΎΠ±ΠΎΠΈΠΌ β ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π²ΠΎΠΎΠ±ΡΠ΅.
ΠΡΠ»ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ β Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΠΊΠ»Π°ΡΡ-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄.
ΠΠΎΠ³Π΄Π° Ρ ΠΎΠ±ΠΎΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°ΡΡΡΠΎΠΉ, Π½ΠΎ ΡΠ°Π·Π½ΡΠΌΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ β Π²ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΈ ΡΠΈΠΏΡ.
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° (override) Π΅ΡΠ΅ Ρ Java 5 ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. Π’ΠΎ Π΅ΡΡΡ, Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅ ΡΠΈΠΏ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ: super ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Number, @Override ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Integer.
ΠΡΠ»ΠΈ ΡΠΈΠΏΡ Π½Π΅ ΡΠ²ΡΠ·Π°Π½Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ String ΠΈ Long β ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ.
ΠΠ»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π½Π΅Ρ. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΈΠΏΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ: intβlong, intβInteger. Π Π»ΡΠ±ΠΎΠΌ ΠΈΠ· ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² Π±ΡΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΎ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ², Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π² ΡΠΎΡΠ½ΠΎΡΡΠΈ.
ΠΡΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π² ΡΠ°ΡΡΠΈ throws, ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡΠΈΠΌΠΈ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΡΠ°Π²ΠΈΠ»Π° Π·Π΄Π΅ΡΡ ΡΠ΅ ΠΆΠ΅, ΡΡΠΎ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ² β ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ. ΠΡΠ»ΠΈΡΠΈΠ΅ Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π½Π΅ Π±ΡΠ²Π°Π΅Ρ, Π° Π΄Π°ΠΆΠ΅ Π΄Π»Ρ Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΡ ΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π²ΡΠ΅Π³Π΄Π° Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡΠΈΠΉ ΠΎΠ±ΠΎΠΈΠΌ β ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ Π²ΠΎΠΎΠ±ΡΠ΅.
1π17β€6π₯5
Π₯ΠΎΡΠΈΡΠ΅ ΠΎΡΠ²ΠΎΠΈΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ Π½Π°Π²ΡΠΊ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ?
ΠΠ΄Π΅ΠΌ Π²Π°Ρ Π½Π° ΠΎΡΠΊΡΡΡΠΎΠΌ Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅ 27 Π°Π²Π³ΡΡΡΠ° Π² 20:00 ΠΌΡΠΊ, Π³Π΄Π΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ:
- ΠΎΡΠ½ΠΎΠ²Ρ Spring Security;
- ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Spring Security Π΄Π»Ρ Π·Π°ΡΠΈΡΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²;
- ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°Π³ΠΈΠΈ Β«AlohomoraΒ» Π΄Π»Ρ ΠΎΡΠΊΡΡΡΠΈΡ Π·Π°ΠΏΠ΅ΡΡΡΡ Π΄Π²Π΅ΡΠ΅ΠΉ Π² ΠΌΠΈΡΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
Π£ΡΠΎΠΊ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Java- ΠΈ Kotlin-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
ΠΡΡΡΠ΅ΡΠ°Π΅ΠΌΡΡ Π² ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ ΡΡΠ°ΡΡΠ° ΠΊΡΡΡΠ° Β«Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π° Spring FrameworkΒ».
ΠΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ Π²Π΅Π±ΠΈΠ½Π°ΡΠ° ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅Π½Ρ Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 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 Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
Π‘ΡΠΎΠΈΡ ΡΡΠ°Π·Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠ»ΠΎΡ Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°. Π’Π°ΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π³ΡΡΠ±ΠΎ Π½Π°ΡΡΡΠ°Π΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠΎΠΊΡΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ Π»ΠΎΠΌΠ°Π΅Ρ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠΊΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ±Π΅Π³Π½ΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ 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
ΠΠ΄ΠΈΠ½ ΠΈΠ· Π»ΡΡΡΠΈΡ Π°ΠΉΡΠΈΡΠ½ΠΈΠΊΠΎΠ² Π ΠΎΡΡΠΈΠΈ ΡΡΠΈΡ Π±Π°Π·Π΅ ΠΊΠΎΠ΄ΠΈΠ½Π³Π° Π² 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 β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΊΠΎΡΠΎΡΠΊΠΎΠΌΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ.
ΠΠ°ΠΊΠ΅Ρ java.util.stream β ΡΡΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΡΠΎΠΊΠΎΠ²ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΌ ΡΡΠΈΠ»Π΅. ΠΠ½ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ (ΠΊΡΠΎΠΌΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΡ) Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°. Π’ΠΈΠΏΠΈΡΠ½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ β ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΡ, ΠΏΠ΅ΡΠ΅ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°, ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ .
Π’ΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ Java Stream API β ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½Π°Ρ (intermediate), ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ (terminal) ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°Π΄Π°Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ Π΄Π°Π½Π½ΡΡ , ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ. Π‘Π°ΠΌ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ.
ΠΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΡΡ ΡΡΡΠΈΠΌ. ΠΠ° ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π’Π΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Β«ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΡΒ» ΠΏΠΎΡΠΎΠΊ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½Π°, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π²Π·ΡΡΡΠΌ ΡΡΡΠΈΠΌΠΎΠΌ. Π‘ΡΡΠΈΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»Π΅Π½ΠΈΠ²ΠΎ β Π²ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ Π½Π°ΡΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π΄ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΉ.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΈΠΌΠΎΠ² β map-reduce. Map β ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, reduce β ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½Π°Ρ.
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π½Π°Π±ΠΎΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π»ΠΈΡΡΡ Π½Π° Π΄Π°Π»ΡΠ½Π΅ΠΉΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ. ΠΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° β ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ StreamOpFlag:
β’ SORTED β ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ;
β’ ORDERED β ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±Ρ ΠΎΠ΄Π°;
β’ DISTINCT β ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π±Π΅Π· Π΄ΡΠ±Π»Π΅ΠΉ;
β’ SIZED β ΠΈΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ;
β’ SHORT_CIRCUIT β ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΊΠΎΡΠΎΡΠΊΠΎΠΌΡ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ.
π13π₯6