Π§Π΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ final finally finalize?
Π’Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ. ΠΠ°ΠΊ ΠΈ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ Object, ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΠ°ΡΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ.
finalize β ΠΌΠ΅ΡΠΎΠ΄-ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠ· Object.
final β ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΏΠΎΠ»ΡΠΌ, ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°Ρ . Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² Π²ΠΎΠΎΠ±ΡΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ API ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
ΠΠΎΠ³Π΄Π° Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ½Π° ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ effectively final. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ final Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ.
finally β ΡΠ°ΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try-catch-finally.
ΠΡΠ±ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ±ΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° try ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ catch (ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ). ΠΡΠΈΠΌ ΠΏΡΠΎΠ΄ΠΈΠΊΡΠΎΠ²Π°Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ Π±Π»ΠΎΠΊΠΈ catch Π² ΡΡΡΠΎΠ³ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΎΡ ΡΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°, ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. Π ΡΠ»ΡΡΠ°Π΅ multicatch ΡΠΎΡ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡΡΡ ΠΈ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ catch. ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π±Π»ΠΎΠΊ finally. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ½ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π±ΡΠ»ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠ»Ρ ΡΡΠ΅Π±ΡΡΡΠΈΡ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² (Β«ΡΠ΅ΡΡΡΡΠΎΠ²Β») Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ AutoCloseable, ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠΉΡΡ ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠ° final Π²ΡΠ½ΠΎΡΠΈΡΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄ close ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ try-with-resources. ΠΡΠ»ΠΈ Π² ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈ ΡΠ²Π½ΡΠΉ final, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎΡΠ»Π΅.
Java Guruπ€ #java
Π’Π΅ΠΌ, ΡΡΠΎ ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ. ΠΠ°ΠΊ ΠΈ Π²ΠΎΠΏΡΠΎΡ ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ Object, ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ± Π½Π°ΡΠ°ΡΡ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡ.
finalize β ΠΌΠ΅ΡΠΎΠ΄-ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΠ· Object.
final β ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ, ΠΏΠΎΠ»ΡΠΌ, ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ ΠΈ ΠΊΠ»Π°ΡΡΠ°ΠΌ. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΌ ΠΈ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅Π»ΡΠ·Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°Ρ . Π€ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ² Π²ΠΎΠΎΠ±ΡΠ΅. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠ΅Π³ΠΎ API ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ.
ΠΠΎΠ³Π΄Π° Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π²Π½Π΅ΡΠ½Π΅ΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ½Π° ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ effectively final. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ final Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡ ΡΠ°Π²Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ.
finally β ΡΠ°ΡΡΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try-catch-finally.
ΠΡΠ±ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π²ΡΠ±ΡΠΎΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ· Π±Π»ΠΎΠΊΠ° try ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ°ΠΌΡΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ catch (ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ). ΠΡΠΈΠΌ ΠΏΡΠΎΠ΄ΠΈΠΊΡΠΎΠ²Π°Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ Π±Π»ΠΎΠΊΠΈ catch Π² ΡΡΡΠΎΠ³ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, ΠΎΡ ΡΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°, ΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. Π ΡΠ»ΡΡΠ°Π΅ multicatch ΡΠΎΡ ΠΆΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ±Π»ΡΠ΄Π°ΡΡΡΡ ΠΈ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ catch. ΠΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΏΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ.
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΡ Π±Π»ΠΎΠΊ finally. ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΎΠ½ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π±ΡΠ»ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π΅Ρ. Π’ΠΈΠΏΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ β ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ², ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΠ»Ρ ΡΡΠ΅Π±ΡΡΡΠΈΡ ΡΠΈΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² (Β«ΡΠ΅ΡΡΡΡΠΎΠ²Β») Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ AutoCloseable, ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠΉΡΡ ΠΊΠΎΠ΄ Π±Π»ΠΎΠΊΠ° final Π²ΡΠ½ΠΎΡΠΈΡΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄ close ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ try-with-resources. ΠΡΠ»ΠΈ Π² ΡΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈ ΡΠ²Π½ΡΠΉ final, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎΡΠ»Π΅.
Java Guruπ€ #java
β€6π4π₯4
Π§Π΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ checked ΠΈ unchecked ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ?
ΠΠΎΠΏΡΠΎΡ ΡΠΎΡΠΌΡΠ»ΠΈΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠ° β ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΡΠ²Π°ΡΡ checked ΠΈ unchecked. Checked ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΡΠΈΠ³Π½Π°ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ throws; ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² throws Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π΅. Unchecked ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π° Π² throws.
π Throwable β Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ throw ΠΈ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try-catch
π RuntimeException β Β«Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅Β» unchecked-ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
π Error β unchecked ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ·Π½Π°ΡΠ°ΡΡ Β«ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡΒ» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ (Ρ
ΠΎΡΡ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ). Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ JVM ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡΡ Π² Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ ΠΈ Π½Π΅ Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
Π³Π°ΡΠ°Π½ΡΠΈΠΉ
π Exception (ΠΊΡΠΎΠΌΠ΅ RuntimeException) β checked ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
@javatasks #java
ΠΠΎΠΏΡΠΎΡ ΡΠΎΡΠΌΡΠ»ΠΈΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ, ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠ° β ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π±ΡΠ²Π°ΡΡ checked ΠΈ unchecked. Checked ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΡΠΈΠ³Π½Π°ΡΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠ°Π·Π΄Π΅Π»Π΅ throws; ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² throws Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π΅. Unchecked ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½Π° Π² throws.
@javatasks #java
Please open Telegram to view this post
VIEW IN TELEGRAM
β€5π₯4π3
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ default?
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ (Ρ Java 1.5) ΡΡΠΎ ΡΠ»ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
Π Java 8 Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π»ΡΠΌΠ±Π΄Π°ΠΌΠΈ ΠΈ ΡΡΡΠΈΠΌΠ°ΠΌΠΈ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΡΡΡΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π½ΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠΈΠΊΡΠΎ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π»ΡΡ Π»ΠΎΠΌΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ, ΠΈ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° default ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΠΌΡ ΡΠ΅Π»ΠΎ. ΠΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ°ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΡΠ½Π°Π±ΠΆΠ°ΡΡΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π΅Π³ΠΎ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΡΡΠΎ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ: InterfaceName.super.methodName().
ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π° ΡΠ°Π³ ΠΊ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π² Java Π±Π΅ΡΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ β ΠΏΡΠΈΠΌΠ΅ΡΡΠΌ (mixin). ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π²ΡΡ Π΅ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ.
@javatasks #java
ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ (Ρ Java 1.5) ΡΡΠΎ ΡΠ»ΠΎΠ²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΎΡΡ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
Π Java 8 Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π»ΡΠΌΠ±Π΄Π°ΠΌΠΈ ΠΈ ΡΡΡΠΈΠΌΠ°ΠΌΠΈ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΎΡΡΡΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π½ΠΎΠ²ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. ΠΠΈΠΊΡΠΎ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π»ΡΡ Π»ΠΎΠΌΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ, ΠΈ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° default ΠΊ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΠΌΡ ΡΠ΅Π»ΠΎ. ΠΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΡΠ°ΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΡΠ½Π°Π±ΠΆΠ°ΡΡΡΡ Π΄Π΅ΡΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π΅Π³ΠΎ Π΄Π΅ΡΠΎΠ»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΡΡΠΎ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ· Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ: InterfaceName.super.methodName().
ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΡΠ»ΠΈ Π΅ΡΠ΅ Π½Π° ΡΠ°Π³ ΠΊ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ Π² Java Π±Π΅ΡΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ β ΠΏΡΠΈΠΌΠ΅ΡΡΠΌ (mixin). ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π²ΡΡ Π΅ΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ.
@javatasks #java
π7π₯4β€1
Π ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ?
ΠΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² JLS 8.3.1:
π ΠΠ΅Π»ΡΠ·Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π²Π°ΠΆΠ΄Ρ;
π ΠΠ΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ, Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
@ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΄ΠΎΡΡΡΠΏ,
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² JLS 8.4.3:
π Π’Π΅ ΠΆΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΡΡΠΎ ΠΈ ΠΊ ΠΏΠΎΠ»Ρ;
π Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ abstract ΠΊΡΠΎΠΌΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ protected ΠΈΠ»ΠΈ public;
π native ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ strictfp.
Π ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ:
@ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΄ΠΎΡΡΡΠΏ,
Java Guruπ€ #java
ΠΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»Ρ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² JLS 8.3.1:
ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ, Π½ΠΎ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
@ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΄ΠΎΡΡΡΠΏ,
static final transient volatile
Π’ΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² JLS 8.4.3:
Π ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, Π½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ:
@ΠΠ½Π½ΠΎΡΠ°ΡΠΈΠΈ, Π΄ΠΎΡΡΡΠΏ,
abstract static final synchronized native strictfp
Java Guruπ€ #java
Please open Telegram to view this post
VIEW IN TELEGRAM
π10π₯6β€1
Π€Π°ΡΠ°Π΄ β ΡΡΠΎ ΡΡΡΡΠΊΡΡΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠ΅ΡΠ½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π°Π±ΠΎΡΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌ. ΠΠ½ ΡΠΊΡΡΠ²Π°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π½Π΅ΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ API Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅:
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°:
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ:
Please open Telegram to view this post
VIEW IN TELEGRAM
π₯10β€6π2
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°?
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ || ΠΈ && Π»Π΅Π²ΠΎ-Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½Ρ, ΡΠΎ Π΅ΡΡΡ ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ true Π² || ΠΈΠ»ΠΈ false Π² && β ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠ΅ΡΠ΅Π½, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌ ΠΆΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ Β«ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅Β» (short-circuiting) β ΠΎΡΡΠ°Π²ΡΠΈΠΉΡΡ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π·Π° Π½Π΅Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡΡΡ.
ΠΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° null Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ:
ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠ΅ ΠΏΠ»Π°Π²Π°ΡΡΠΈΠ΅ Π±Π°Π³ΠΈ, Π΅ΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π° ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌ ΡΡΡΠ΅ΠΊΡΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ: | ΠΈ &. ΠΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ Β«Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΒ» ΠΈ Β«Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈΒ».
ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΈΠ»ΠΈΒ» ^. ΠΠ½ ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±ΡΠ»Π΅Π²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΌΡ !=. ΠΡΡΠ³ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ.
Java Guruπ€ #java
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ || ΠΈ && Π»Π΅Π²ΠΎ-Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½Ρ, ΡΠΎ Π΅ΡΡΡ ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ true Π² || ΠΈΠ»ΠΈ false Π² && β ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠ΅ΡΠ΅Π½, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΠΌ ΠΆΠ΅. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ Β«ΠΊΠΎΡΠΎΡΠΊΠΎΠ΅ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅Β» (short-circuiting) β ΠΎΡΡΠ°Π²ΡΠΈΠΉΡΡ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π½Π΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ Π·Π° Π½Π΅Π½Π°Π΄ΠΎΠ±Π½ΠΎΡΡΡΡ.
ΠΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° null Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ:
return param != null && param.getBoolMember();
ΠΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²Π»Π΅ΡΠ΅Ρ Π·Π° ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠ΅ ΠΏΠ»Π°Π²Π°ΡΡΠΈΠ΅ Π±Π°Π³ΠΈ, Π΅ΡΠ»ΠΈ Π²ΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, Π° ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠΌ ΡΡΡΠ΅ΠΊΡΠΎΠΌ. ΠΠ»Ρ ΡΡΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ Π²Π΅ΡΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π±Π΅Π· ΠΊΠΎΡΠΎΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ: | ΠΈ &. ΠΡΠΎ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²Π°ΡΠΈΠ°ΡΠΈΠΈ Β«Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΒ» ΠΈ Β«Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ»ΠΈΒ».
ΠΠ΄ΠΎΠ±Π°Π²ΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΈΠ»ΠΈΒ» ^. ΠΠ½ ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π±ΡΠ»Π΅Π²ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΌΡ !=. ΠΡΡΠ³ΠΈΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π΄Π»Ρ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ.
Java Guruπ€ #java
β€8π4π₯1
π¦Ύ ΠΠ°Ρ ΠΆΠ΄Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΠΊΠ΅ΠΉΡΡ: Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π±Π°Π·ΠΎΠ²ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Java, Spring ΠΈ Docker. ΠΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΈΠΏΠ»ΠΎΠΌ OTUS ΡΠ΅Π½ΡΡ HR Π² ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡ .
ΠΡΠ»ΠΈ Π²Ρ ΡΠΈΡΠ°Π΄ΠΌΠΈΠ½, ΡΠ΅ΡΡΠΈΡΠΎΠ²ΡΠΈΠΊ, Π°Π½Π°Π»ΠΈΡΠΈΠΊ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠΈΡΠ΅ ΠΎΡΠ²ΠΎΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π½ΡΠ»Ρ β ΡΡΠΎΡ ΠΊΡΡΡ Π΄Π»Ρ Π²Π°Ρ.
ΠΡ Π½Π°ΡΡΠΈΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ PostgreSQL, Kafka ΠΈ Kubernetes, ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ ΠΈ Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΡΠ΅Π·ΡΠΌΠ΅ ΠΏΠΎΠ΄ Middle-Java-Dev.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4π2π₯2
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎΠΈΡ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ΅Π»ΡΡ Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΡΠ΅Π». Π Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ two's complement β Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 0 Π²ΡΠ΅ Π±ΠΈΡΡ Π½ΡΠ»ΠΈ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° 1 ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅.
ΠΠΈΠ½Π°ΡΠ½ΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ &, | ΠΈ ^ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ Β«ΠΒ», Β«ΠΠΠΒ» ΠΈ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠΒ» (XOR) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ΄Π΅ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ XOR:
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΈΠ»ΠΈΒ» Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π΄Π²Π° ΡΠ°Π·Π° Π΄Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ° ΡΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π²ΡΡΡΡΠΏΠΈΡ ΠΊΠ»ΡΡΠΎΠΌ;
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ XOR ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ XOR-ΠΎΠ±ΠΌΠ΅Π½ β Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π±Π΅Π· ΡΠΈΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
Π£Π½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ) ~. ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈΒ» Ρ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ β Π²ΡΠ΅ Π±ΠΈΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΡΡΡΡ. ~x ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ -x-1. ~0 == -1.
ΠΠΈΡΠΎΠ²ΡΠ΅ ΡΠ΄Π²ΠΈΠ³ΠΈ: Π»Π΅Π²ΡΠΉ << ΠΏΡΠ°Π²ΡΠΉ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ >> ΠΈ ΠΏΡΠ°Π²ΡΠΉ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ >>>. ΠΠ΅Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ β ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³Π°ΡΡ, ΠΏΡΠ°Π²ΡΠΉ β Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡΠΎΠ².
ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π΄ΠΈΡΡΠ°Π½ΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π°, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ°Π·ΡΡΠ΄ΠΎΠ² β 31 Π΄Π»Ρ int ΠΈ 63 Π΄Π»Ρ long. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 5 ΠΈ 7 Π±ΠΈΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π’ΠΎ Π΅ΡΡΡ Π΄Π»Ρ int ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ x << 33 ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ x << 2.
a << b ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ a Π½Π° 2 Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ b.
a >> b ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° 2 Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ b, Ρ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π½ΠΈΠ·. ΠΠ»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ a ΡΠΎ ΠΆΠ΅ ΡΡΠΎ a/pow(2,b). ΠΠ»Ρ Π½Π΅ Π΄Π΅Π»ΡΡΠΈΡ ΡΡ Π½Π°ΡΠ΅Π»ΠΎ Π½Π° pow(2,b) ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΎ a/pow(2,b)-1.
ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ ΡΡΠ°ΠΊΡΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ Π½Π΅ ΠΊΠ°ΠΊ two's complement, Π° ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅. Π’ΠΎ Π΅ΡΡΡ Integer.MIN_VALUE Π±ΡΠ΄Π΅Ρ ΡΠ΄Π²ΠΈΠ½ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎ Π½Π° 1 Π±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠ΅ΠΌ Integer.MAX_VALUE.
ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π» Π±Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ, ΠΈ Π±ΡΠ» Π±Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ.
Java Guruπ€ #java
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎΠΈΡ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ΅Π»ΡΡ Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΡΠ΅Π». Π Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ two's complement β Π΄Π»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 0 Π²ΡΠ΅ Π±ΠΈΡΡ Π½ΡΠ»ΠΈ, ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° 1 ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅.
ΠΠΈΠ½Π°ΡΠ½ΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ &, | ΠΈ ^ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΠ±ΠΈΡΠΎΠ²ΡΠ΅ Β«ΠΒ», Β«ΠΠΠΒ» ΠΈ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΠΠΠΒ» (XOR) ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠ΄Π΅ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ΅Π½ XOR:
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΠΈΠ»ΠΈΒ» Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π΄Π²Π° ΡΠ°Π·Π° Π΄Π°Π΅Ρ ΡΠΎ ΠΆΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ° ΡΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΠ΅, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π²ΡΡΡΡΠΏΠΈΡ ΠΊΠ»ΡΡΠΎΠΌ;
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ XOR ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ XOR-ΠΎΠ±ΠΌΠ΅Π½ β Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π±Π΅Π· ΡΠΈΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
Π£Π½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π±ΠΈΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΡΡΠΈΡΠ°Π½ΠΈΡ (Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ) ~. ΠΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ΅Π½ Β«ΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅ΠΌΡ ΠΈΠ»ΠΈΒ» Ρ ΡΠ°ΠΌΠΈΠΌ ΡΠΎΠ±ΠΎΠΉ β Π²ΡΠ΅ Π±ΠΈΡΡ ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΡΡΡΡ. ~x ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ -x-1. ~0 == -1.
ΠΠΈΡΠΎΠ²ΡΠ΅ ΡΠ΄Π²ΠΈΠ³ΠΈ: Π»Π΅Π²ΡΠΉ << ΠΏΡΠ°Π²ΡΠΉ Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ >> ΠΈ ΠΏΡΠ°Π²ΡΠΉ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ >>>. ΠΠ΅Π²ΡΠΉ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ β ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³Π°ΡΡ, ΠΏΡΠ°Π²ΡΠΉ β Π½Π° ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΠΈΡΠΎΠ².
ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π΄ΠΈΡΡΠ°Π½ΡΠΈΡ ΡΠ΄Π²ΠΈΠ³Π°, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ°Π·ΡΡΠ΄ΠΎΠ² β 31 Π΄Π»Ρ int ΠΈ 63 Π΄Π»Ρ long. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠ΅ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠ΅ 5 ΠΈ 7 Π±ΠΈΡΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. Π’ΠΎ Π΅ΡΡΡ Π΄Π»Ρ int ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ x << 33 ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ x << 2.
a << b ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΠΎ ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΡ a Π½Π° 2 Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ b.
a >> b ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° 2 Π² ΡΡΠ΅ΠΏΠ΅Π½ΠΈ b, Ρ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΠ΅ΠΌ Π²Π½ΠΈΠ·. ΠΠ»Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΡ a ΡΠΎ ΠΆΠ΅ ΡΡΠΎ a/pow(2,b). ΠΠ»Ρ Π½Π΅ Π΄Π΅Π»ΡΡΠΈΡ ΡΡ Π½Π°ΡΠ΅Π»ΠΎ Π½Π° pow(2,b) ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ ΡΡΠΎ a/pow(2,b)-1.
ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΡΠΉ ΡΠ΄Π²ΠΈΠ³ Π²ΠΏΡΠ°Π²ΠΎ ΡΡΠ°ΠΊΡΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ Π½Π΅ ΠΊΠ°ΠΊ two's complement, Π° ΠΊΠ°ΠΊ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ΅. Π’ΠΎ Π΅ΡΡΡ Integer.MIN_VALUE Π±ΡΠ΄Π΅Ρ ΡΠ΄Π²ΠΈΠ½ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΡΡΠΎ ΡΠ΄Π²ΠΈΠ³Π°Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎ Π½Π° 1 Π±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠ΅ΠΌ Integer.MAX_VALUE.
ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π» Π±Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ, ΠΈ Π±ΡΠ» Π±Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ.
Java Guruπ€ #java
π₯6β€4π3
23 ΠΈΡΠ»Ρ(ΡΠΆΠ΅ Π·Π°Π²ΡΡΠ°!) Π² 19:00 ΠΏΠΎ ΠΌΡΠΊ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° ΠΎΡΠΊΡΡΡΠΎΠ΅ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π½Π°ΡΡΠΎΡΡΠ΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π½Π° Middle Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°.
ΠΠ°ΠΊ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ:
ΠΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. ΠΡΠΈΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΌΠ΅Π½ΡΠΎΡΡΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡ Π¨ΠΠ Π’ΠΠΠ’ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΡΡ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΡΠ²ΠΎΠΉ Π³ΡΠ΅ΠΉΠ΄, ΠΠ ΠΈ ΠΏΡΠΎΠΊΠ°ΡΠ°ΡΡ ΡΠΊΠΈΠ»Π»Ρ.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈ Π² Π½Π°ΡΠ΅Π³ΠΎ Π±ΠΎΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΡΠΈΡ β @shortcut_sh_bot
Π Π΅ΠΊΠ»Π°ΠΌΠ°.
Π ΡΠ΅ΠΊΠ»Π°ΠΌΠΎΠ΄Π°ΡΠ΅Π»Π΅
Please open Telegram to view this post
VIEW IN TELEGRAM
β€3π2π₯2
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ A ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠΌ B?
Π Java Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΡΠΈ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠΈΠΏΠΎΠ². Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΎΠ½ΠΈ Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π½Π°Π±ΠΎΡΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². Π ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΡΠ±ΡΠ²Π°Π½ΠΈΡ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ:
instanceof β Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΡΠ°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ ΠΈ ΡΠ°ΠΌΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ A ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ B ΡΠ²Π½ΠΎ, Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π°Π΄ΠΎ Π΅Π³ΠΎ. ΠΡΠ»ΠΈ A (ΡΠΎΡΠ½Π΅Π΅ ΡΠΈΠΏ Ρ ΡΠ°Π½ΡΡΠ΅ΠΉ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ A ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ) ΠΈ B Π½Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ β ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΎΡΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠΌ B ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠΏΠ°Π΄Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ inconvertible types.
Class::isInstance β ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° A. ΠΠ³ΠΎ ΡΡΠΎΠΈΡ Π²ΡΠ±ΡΠ°ΡΡ, ΠΊΠΎΠ³Π΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ A Π² Π½Π°Π»ΠΈΡΠΈΠΈ, Π½ΠΎ B β Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΈΠΏ. Π’ΠΎ Π΅ΡΡΡ, Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ A a ΠΈ Class bClass, ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ bClass.isInstance(a).
Class::isAssignableFrom β ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Class<A>. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° A Π½Π΅Ρ. bClass.isAssignableFrom(aClass).
ΠΡΡΡ Π΅ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΈΠΌΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠΈΠΏΠ° A ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π΅Π³ΠΎ ΠΊ B. ΠΡΠ»ΠΈ ΡΠΈΠΏΡ Π±ΡΠ»ΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ±ΡΠΎΡΠΈΡ ClassCastException. ΠΡΠΎ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠΌΡΡΠ»Π°Ρ ΠΏΠ»ΠΎΡ ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±, ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ Π½Π΅Ρ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΡ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π°Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Π° Π² Effective Java Item 57.
Java Guruπ€ #java
Π 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 Guruπ€ #java
β€6π5π₯3
Π§Π΅ΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π»ΡΠΌΠ±Π΄Ρ?
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΠΌΠ±Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ β ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΡΠ·ΡΠΊ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΠΊΠ»Π°ΡΡΠ° Π΅ΡΡΡ ΠΏΠΎΠ»Ρ. ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ, ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ»Ρ Π»ΡΠΌΠ±Π΄Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π»ΠΈΡΡ Π·Π°Ρ Π²Π°Ρ ΠΈ effectively final ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΡΠΌΠ±Π΄ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΡΠΎ ΡΠΈΠΏ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠΎΡΠΏ, Π»ΡΠΌΠ±Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ½Π°ΡΡΠΆΠΈ, Π² Π»ΡΠΌΠ±Π΄Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Β«variable is already definedΒ», Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΡΠΊΡΠΎΠ΅Ρ (shadowing) Π²Π½Π΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM, Π΄Π»Ρ Π»ΡΠΌΠ±Π΄Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ .class ΡΠ°ΠΉΠ»Π°, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ invokedynamic ΠΈ ΠΊΠ»Π°ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Π»Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ LambdaMetafactory. Π’Π°ΠΊ ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
Java Guruπ€ #java
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΠΌΠ±Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ β ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΡΠ·ΡΠΊ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΠΊΠ»Π°ΡΡΠ° Π΅ΡΡΡ ΠΏΠΎΠ»Ρ. ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ, ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ»Ρ Π»ΡΠΌΠ±Π΄Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π»ΠΈΡΡ Π·Π°Ρ Π²Π°Ρ ΠΈ effectively final ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΡΠΌΠ±Π΄ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΡΠΎ ΡΠΈΠΏ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠΎΡΠΏ, Π»ΡΠΌΠ±Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ½Π°ΡΡΠΆΠΈ, Π² Π»ΡΠΌΠ±Π΄Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Β«variable is already definedΒ», Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΡΠΊΡΠΎΠ΅Ρ (shadowing) Π²Π½Π΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM, Π΄Π»Ρ Π»ΡΠΌΠ±Π΄Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ .class ΡΠ°ΠΉΠ»Π°, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ invokedynamic ΠΈ ΠΊΠ»Π°ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Π»Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ LambdaMetafactory. Π’Π°ΠΊ ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
Java Guruπ€ #java
π₯12β€4π4π1
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°?
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ-ΠΌΠ°ΡΡΠΈΠ². Π Π½Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ΅ Ρ Java 5 Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ: Variable-length argument (vararg). Π’ΡΠΈ ΡΠΎΡΠΊΠΈ ... ΡΡΠ°Π²ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠΏΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Ρ ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ².
ΠΠ° ΡΡΠΎΠ²Π½Π΅ Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ Π²Π°ΡΠ°ΡΠ³Π° Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ: vararg-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Foo... ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-ΠΌΠ°ΡΡΠΈΠ² Foo[], Π½Π° ΡΡΠ°ΠΏΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°.
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠ΅ΠΉ, Π½Π° vararg Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ.
Vararg, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ², ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ. ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ int... ΠΈ float.... ΠΡΠ·ΠΎΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π²Π°ΡΠΈΠ°Π½Ρ Ρ int, ΠΊΠ°ΠΊ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Ρ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ int... ΠΈ boolean..., ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Β«Ambiguous method callΒ».
ΠΠΎΠ³Π΄Π° ΡΠΈΠΏΠΎΠΌ Π²Π°ΡΠ°ΡΠ³Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ generic-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ warning Β«Possible heap pollution from parameterized vararg typeΒ». ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ Π² ΡΠ΅ΠΌ ΡΡΠΎΡ ΡΠΈΡΠΊ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ heap pollution, ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @SafeVarargs.
Java Guruπ€ #java
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ-ΠΌΠ°ΡΡΠΈΠ². Π Π½Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ΅ Ρ Java 5 Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ: Variable-length argument (vararg). Π’ΡΠΈ ΡΠΎΡΠΊΠΈ ... ΡΡΠ°Π²ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠΏΠΎΠΌ ΠΈ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π»ΡΠ±ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², Π½Π΅ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Ρ ΠΈΡ Π² ΠΌΠ°ΡΡΠΈΠ².
ΠΠ° ΡΡΠΎΠ²Π½Π΅ Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ Π²Π°ΡΠ°ΡΠ³Π° Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ: vararg-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Foo... ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-ΠΌΠ°ΡΡΠΈΠ² Foo[], Π½Π° ΡΡΠ°ΠΏΠ΅ Π²ΡΠ·ΠΎΠ²Π° ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π΅ΡΠ²Π½ΠΎΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π°.
Π§ΡΠΎΠ±Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠ΅ΠΉ, Π½Π° vararg Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅: ΠΈΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ.
Vararg, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠΈΠ², ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ. ΠΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠΎΠΏΡΡΡΠΈΠΌ, ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ int... ΠΈ float.... ΠΡΠ·ΠΎΠ² ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π²Π°ΡΠΈΠ°Π½Ρ Ρ int, ΠΊΠ°ΠΊ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ Ρ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ int... ΠΈ boolean..., ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Β«Ambiguous method callΒ».
ΠΠΎΠ³Π΄Π° ΡΠΈΠΏΠΎΠΌ Π²Π°ΡΠ°ΡΠ³Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ generic-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ warning Β«Possible heap pollution from parameterized vararg typeΒ». ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅ Π² ΡΠ΅ΠΌ ΡΡΠΎΡ ΡΠΈΡΠΊ, ΡΡΠΎ Π²Π°Ρ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ heap pollution, ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @SafeVarargs.
Java Guruπ€ #java
π10β€3π₯2
Π§ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ /api/customers/{5}, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΠΈ c id 5 Π½Π΅Ρ
Anonymous Quiz
27%
HTTP 404 (Not Found) Ρ ΡΠ΅Π»ΠΎΠΌ ΠΎΡΠ²Π΅ΡΠ° null
52%
HTTP 200 (OK) Ρ ΡΠ΅Π»ΠΎΠΌ ΠΎΡΠ²Π΅ΡΠ° null
6%
NullPointerException
8%
HTTP 500 (Internal Server Error)
7%
HTTP 400 (Bad Request)
π₯6π5β€1
This media is not supported in your browser
VIEW IN TELEGRAM
Π’Π΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΠΆΠ΅Π»Π΅Π·ΠΎ ΠΈ ΡΠΎΠ±ΠΎΡΡ Π½Π° Yandex Robotics Day ΡΠΆΠ΅ 16 Π°Π²Π³ΡΡΡΠ°!
ΠΠ° ΡΠΊΠ»Π°Π΄Π°Ρ ΠΠ°ΡΠΊΠ΅ΡΠ°, ΠΠ΅ΠΌΠ°Π½Ρ ΠΡΠΎ, ΠΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠΊΠ°, ΠΠ°Π²ΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ±ΠΎΡΡ Π―Π½Π΄Π΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π±ΡΡΡΡΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ²Π°ΡΡ, ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΠΎΡΡΠ»ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ Π·Π°ΠΊΠ°Π·Ρ. Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π»ΠΎ Π±ΡΡΡΡΠΎ ΠΈ ΡΠΎΡΠ½ΠΎ, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ Π―Π½Π΄Π΅ΠΊΡ Π ΠΎΠ±ΠΎΡΠΈΠΊΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ»ΡΡΡΠ°ΡΡ ΠΈΡ .
16 Π°Π²Π³ΡΡΡΠ° Π² ΠΠΎΡΠΊΠ²Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΌΠΈΡΠ°ΠΏ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΡΡ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ:
β Π‘Π΅ΡΡΠΆΠ° Π‘ΡΠ°ΡΠΈΠΊΠΎΠ² Π²ΡΡΡΡΠΏΠΈΡ Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΏΡΠΎ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Yandex Robotics ΠΈ Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Yandex RMS
β ΠΠΈΠΌΠ° ΠΠΎΠ²ΡΠ°Π½ ΠΎΠ±ΡΡΡΠ½ΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΌΠ½ΡΡ ΡΠΎΠ±ΠΎΡΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ imitation learning ΠΈ RL
β ΠΠ°ΠΊΡΠΈΠΌ ΠΡΠΈΠ±Π»ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Yandex Robotics Management System ΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΎΠ±ΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅
ΠΡΠΎΠΌΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°, Π²ΡΡΡΠ°Π²ΠΊΠ° ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π²ΠΎΠ²ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΠΊΠ»Π°Π΄Π°Ρ , Π½Π΅ΡΠ²ΠΎΡΠΊΠΈΠ½Π³ ΠΈ Π½Π΅ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π°ΡΡΠ΅ΠΏΠ°ΡΠΈ Ρ ΡΠΊΡΠΏΠ΅ΡΡΠ°ΠΌΠΈ Π―Π½Π΄Π΅ΠΊΡ Π ΠΎΠ±ΠΎΡΠΈΠΊΡ.
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΈ Π·ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ»Π»Π΅Π³!
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "Π―ΠΠΠΠΠ‘ ΠΠΠ ΠΠΠ’". ΠΠΠ 9704254424.
ΠΠ° ΡΠΊΠ»Π°Π΄Π°Ρ ΠΠ°ΡΠΊΠ΅ΡΠ°, ΠΠ΅ΠΌΠ°Π½Ρ ΠΡΠΎ, ΠΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠΊΠ°, ΠΠ°Π²ΠΊΠΈ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ±ΠΎΡΡ Π―Π½Π΄Π΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π±ΡΡΡΡΠΎ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ²Π°ΡΡ, ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΠΎΡΡΠ»ΠΊΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ Π·Π°ΠΊΠ°Π·Ρ. Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π»ΠΎ Π±ΡΡΡΡΠΎ ΠΈ ΡΠΎΡΠ½ΠΎ, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΡ Π―Π½Π΄Π΅ΠΊΡ Π ΠΎΠ±ΠΎΡΠΈΠΊΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ»ΡΡΡΠ°ΡΡ ΠΈΡ .
16 Π°Π²Π³ΡΡΡΠ° Π² ΠΠΎΡΠΊΠ²Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ ΠΌΠΈΡΠ°ΠΏ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΡΡ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ:
β Π‘Π΅ΡΡΠΆΠ° Π‘ΡΠ°ΡΠΈΠΊΠΎΠ² Π²ΡΡΡΡΠΏΠΈΡ Ρ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠΌ ΠΏΡΠΎ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Yandex Robotics ΠΈ Π΅Π΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π² Yandex RMS
β ΠΠΈΠΌΠ° ΠΠΎΠ²ΡΠ°Π½ ΠΎΠ±ΡΡΡΠ½ΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΌΠ½ΡΡ ΡΠΎΠ±ΠΎΡΡΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ imitation learning ΠΈ RL
β ΠΠ°ΠΊΡΠΈΠΌ ΠΡΠΈΠ±Π»ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅Ρ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Yandex Robotics Management System ΡΠΏΡΠ°Π²Π»ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠΎΠ±ΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅
ΠΡΠΎΠΌΠ΅ Π΄ΠΎΠΊΠ»Π°Π΄ΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΎΠ±ΠΎΡΠ°, Π²ΡΡΡΠ°Π²ΠΊΠ° ΡΠ΅Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ Π²ΠΎΠ²ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΠΊΠ»Π°Π΄Π°Ρ , Π½Π΅ΡΠ²ΠΎΡΠΊΠΈΠ½Π³ ΠΈ Π½Π΅ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π°ΡΡΠ΅ΠΏΠ°ΡΠΈ Ρ ΡΠΊΡΠΏΠ΅ΡΡΠ°ΠΌΠΈ Π―Π½Π΄Π΅ΠΊΡ Π ΠΎΠ±ΠΎΡΠΈΠΊΡ.
Π Π΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΈ Π·ΠΎΠ²ΠΈΡΠ΅ ΠΊΠΎΠ»Π»Π΅Π³!
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "Π―ΠΠΠΠΠ‘ ΠΠΠ ΠΠΠ’". ΠΠΠ 9704254424.
β€5π1
Π§ΡΠΎ Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊ finally Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅?
ΠΠ»ΠΎΠΊ finally Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π±ΡΠ»ΠΎ Π»ΠΈ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ Π² Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ΅ try ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎΠ³Π΄Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² try, Π½ΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² finally, Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ. ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ catch.
ΠΠΎΠΏΡΠΎΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² finally Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ±ΡΠΎΡΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· try. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· finally Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· try ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π±ΡΡΠ°.
Π’Π°ΠΊΠ°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ, Π»ΡΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ IntelliJ IDEA Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ throw Π²Π½ΡΡΡΠΈ finally.
Java Guruπ€ #java
ΠΠ»ΠΎΠΊ finally Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π±ΡΠ»ΠΎ Π»ΠΈ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ Π² Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ΅ try ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎΠ³Π΄Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² try, Π½ΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² finally, Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ. ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ catch.
ΠΠΎΠΏΡΠΎΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² finally Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ±ΡΠΎΡΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· try. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· finally Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· try ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π±ΡΡΠ°.
Π’Π°ΠΊΠ°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ, Π»ΡΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ IntelliJ IDEA Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ throw Π²Π½ΡΡΡΠΈ finally.
Java Guruπ€ #java
β€6π6π₯2
ΠΠ°ΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²?
Object.clone() ΠΈ System.arraycopy(). ΠΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΌΡΠ΅ Π±ΡΡΡΡΡΠ΅ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ . Π£Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° clone() ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². arraycopy(), Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ.
Arrays.copyOf(), Arrays.copyOfRange() ΠΈ Π²ΡΠ΅ ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ. Π£ΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΡΡΡΠΈ Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ System.arraycopy().
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΡΡΠΈΠΌ. Arrays.stream(sourceArray).toArray(). Π£Π΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠΎΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΈ ΠΏΡΠΎΡΠΈΠ΅. ΠΡΠΈΠΌΠ΅Ρ β ΠΊΠ»Π°ΡΡ SerializationUtils ΠΈΠ· Apache Commons.
ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ β ΠΎΠ±Π° ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΈΡΠΎΠ³Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΊΠΎΠΏΠΈΡ β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π²ΡΡΡΠ½ΡΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ new ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π·Π°ΡΠ΅ΠΌ Π² ΡΠΈΠΊΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Stream API Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ.
Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ, Π½ΠΎ ΡΠΆΠ°ΡΠ½ΡΠΉ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠΏΠΎΡΠΎΠ± Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ+Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠ»ΠΎΡ ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π°, Π½ΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Java Guruπ€ #java
Object.clone() ΠΈ System.arraycopy(). ΠΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΌΡΠ΅ Π±ΡΡΡΡΡΠ΅ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ . Π£Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° clone() ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². arraycopy(), Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ.
Arrays.copyOf(), Arrays.copyOfRange() ΠΈ Π²ΡΠ΅ ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ. Π£ΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΡΡΡΠΈ Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ System.arraycopy().
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΡΡΠΈΠΌ. Arrays.stream(sourceArray).toArray(). Π£Π΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠΎΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΈ ΠΏΡΠΎΡΠΈΠ΅. ΠΡΠΈΠΌΠ΅Ρ β ΠΊΠ»Π°ΡΡ SerializationUtils ΠΈΠ· Apache Commons.
ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ β ΠΎΠ±Π° ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΈΡΠΎΠ³Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΊΠΎΠΏΠΈΡ β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π²ΡΡΡΠ½ΡΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ new ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π·Π°ΡΠ΅ΠΌ Π² ΡΠΈΠΊΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Stream API Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ.
Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ, Π½ΠΎ ΡΠΆΠ°ΡΠ½ΡΠΉ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠΏΠΎΡΠΎΠ± Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ+Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠ»ΠΎΡ ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π°, Π½ΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Java Guruπ€ #java
π9β€3π₯3
π Apache Kafka β Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ
ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ
Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡ! Π₯ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ 80% ΡΠΈΠΏΠΈΡΠ½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ?
π 30 ΠΈΡΠ»Ρ Π² 19:00 ΠΠ‘Π β ΠΎΡΠΊΡΡΡΡΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ!
ΠΠ° ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ:
πΉ ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Π±ΡΠΎΠΊΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
πΉ ΠΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ
πΉ ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Kafka
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΡΠΊΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ.
π ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ β Π²Π΅Π±ΠΈΠ½Π°Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ ΡΡΠ°ΡΡΠ° ΠΊΡΡΡΠ° Β«Apache KafkaΒ», ΠΈ Π²ΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΊΠΈΠ΄ΠΊΡ Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅: https://vk.cc/cO4kns
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576, www.otus.ru
π 30 ΠΈΡΠ»Ρ Π² 19:00 ΠΠ‘Π β ΠΎΡΠΊΡΡΡΡΠΉ Π²Π΅Π±ΠΈΠ½Π°Ρ!
ΠΠ° ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ:
πΉ ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· Π±ΡΠΎΠΊΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
πΉ ΠΠΎΠ½ΠΊΡΡΠΈΡΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΠΈ ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ
πΉ ΠΠ°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Kafka
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΡΡΡΠΊΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ½ΠΎΠΉ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ.
π ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ β Π²Π΅Π±ΠΈΠ½Π°Ρ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π² ΠΏΡΠ΅Π΄Π΄Π²Π΅ΡΠΈΠΈ ΡΡΠ°ΡΡΠ° ΠΊΡΡΡΠ° Β«Apache KafkaΒ», ΠΈ Π²ΡΠ΅ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ°Ρ ΡΠΊΠΈΠ΄ΠΊΡ Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅: https://vk.cc/cO4kns
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576, www.otus.ru
β€4π2π₯2π₯±1
Π§Π΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ Closeable ΠΎΡ AutoCloseable?
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ AutoCloseable ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΠ°, ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ Π·Π°ΠΊΡΡΡ. Π Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π΅ close() ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠΈΠΌΠ΅Ρ β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (ObjectOutputStream).
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try-with-resource. ΠΡΡ ΡΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π² Java Π²Π΅ΡΡΠΈΠΈ 7.
ΠΠΎ Java 7 ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β Closeable. Π‘ΠΌΡΡΠ» Π΅Π³ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅. ΠΠ½ Π²ΡΡ Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ AutoCloseable. Π§ΡΠΎΠ±Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠ°ΡΠΎΠ³ΠΎ Closeable ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² try-with-resource, Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Closeable Π±ΡΠ»Π° Π² ΡΠ·ΠΎΡΡΠΈ ΡΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ close(). ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠΈΠΏ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ AutoCloseable Ρ IOException Π΄ΠΎ Exception.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ β ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΌΠ΅ΡΠΎΠ΄Π° close(). Π‘ΡΠ°ΡΡΠΉ Closeable ΡΡΠ΅Π±ΡΠ΅Ρ Π΅Π³ΠΎ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡΠΉ AutoCloseable ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ.
Java Guruπ€ #java
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ AutoCloseable ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΡΡΡΠ°, ΠΏΠΎΠΊΠ° ΡΠΎΡ Π½Π΅ Π·Π°ΠΊΡΡΡ. Π Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΌ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π΅ close() ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° Π·Π°ΠΊΡΡΡΠΈΡ ΡΡΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°. ΠΡΠΈΠΌΠ΅Ρ β Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° (ObjectOutputStream).
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ try-with-resource. ΠΡΡ ΡΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π² Java Π²Π΅ΡΡΠΈΠΈ 7.
ΠΠΎ Java 7 ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π» ΠΏΠΎΡ ΠΎΠΆΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β Closeable. Π‘ΠΌΡΡΠ» Π΅Π³ΠΎ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅. ΠΠ½ Π²ΡΡ Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, Π½ΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ AutoCloseable. Π§ΡΠΎΠ±Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠ°ΡΠΎΠ³ΠΎ Closeable ΡΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² try-with-resource, Π½ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π±ΡΠ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Closeable Π±ΡΠ»Π° Π² ΡΠ·ΠΎΡΡΠΈ ΡΠΈΠΏΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ close(). ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠΈΠΏ Π² Π±Π°Π·ΠΎΠ²ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ AutoCloseable Ρ IOException Π΄ΠΎ Exception.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ β ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΌΠ΅ΡΠΎΠ΄Π° close(). Π‘ΡΠ°ΡΡΠΉ Closeable ΡΡΠ΅Π±ΡΠ΅Ρ Π΅Π³ΠΎ ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½ΠΎΠ²ΡΠΉ AutoCloseable ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΡ.
Java Guruπ€ #java
π13π₯5