ΠΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ²Π΅Π΄Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°?
Anonymous Quiz
6%
10
35%
11
46%
12
6%
13
6%
ΠΠΎΠ³Π΄Π° Π²ΡΠ²Π΅Π΄Π΅Ρ, ΡΠΎΠ³Π΄Π° ΠΈ ΡΠΊΠ°ΠΆΡ π
π9π₯8
ΠΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΠ΅ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ
ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΎΠΈΡ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π·Π½Π°Π½ΠΈΡ ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ΅Π»ΡΡ Π·Π½Π°ΠΊΠΎΠ²ΡΡ ΡΠΈΡΠ΅Π». Π 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.
ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π» Π±Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ, ΠΈ Π±ΡΠ» Π±Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ.
@javatasks #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.
ΠΠ΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΄Π²ΠΈΠ³Π° Π²Π»Π΅Π²ΠΎ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π» Π±Ρ ΡΠΎ Π·Π½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠ΄Π²ΠΈΠ³ΠΎΠΌ, ΠΈ Π±ΡΠ» Π±Ρ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠΌ.
@javatasks #java
π9π₯4
ΠΠ°ΠΊ ΡΠ·Π½Π°ΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ 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.
π17π₯2
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ?
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ/ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ² β ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅/ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΈΠΏΠ°ΠΌΠΈ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ, ΠΎΠ½ΠΈ ΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΊΠ°ΠΊ Π±Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ. ΠΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠ΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ.
ΠΠ΅Π³ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ·Π½Π°ΡΡ ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ :
π ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ: List<Integer> ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° List<? extends Number> (ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ List<Number>).
π ΠΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ: Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° List<Number>#sort ΡΠΈΠΏΠ° Comparator<? super Number> ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Comparator<Object> (ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Comparator<Number>)
ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Β«ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡΒ» β Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ (ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«is aΒ»).
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ β ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ. ΠΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ. ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π±Π΅Π· Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ΠΎΠ² ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½Ρ: List<Number> Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π½ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° List<Double>, Π½ΠΈ Π² List<Object>.
ΠΠ°ΡΡΠΈΠ²Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½Ρ: Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Object[] ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° String[].
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π°ΡΠΈΠ½Π°Ρ Ρ Java 5 ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΠΏΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΡΠΈΠΏΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ/ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ² β ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅/ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΈΠΏΠ°ΠΌΠΈ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ, ΠΎΠ½ΠΈ ΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΊΠ°ΠΊ Π±Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ. ΠΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠ΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ.
ΠΠ΅Π³ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ·Π½Π°ΡΡ ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ :
π ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ: List<Integer> ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° List<? extends Number> (ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ List<Number>).
π ΠΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ: Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° List<Number>#sort ΡΠΈΠΏΠ° Comparator<? super Number> ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Comparator<Object> (ΠΊΠ°ΠΊ Π±ΡΠ΄ΡΠΎ ΠΎΠ½ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Comparator<Number>)
ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Β«ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡΒ» β Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΡΠΈΠΏΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΌΠΈ (ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Β«is aΒ»).
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΅ΡΠ΅ ΠΎΠ΄Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ β ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ. ΠΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ β ΡΡΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ²ΠΎΠΉΡΡΠ² ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ. ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π±Π΅Π· Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ΠΎΠ² ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½Ρ: List<Number> Π½Π΅Π»ΡΠ·Ρ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π½ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° List<Double>, Π½ΠΈ Π² List<Object>.
ΠΠ°ΡΡΠΈΠ²Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½Ρ: Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Object[] ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° String[].
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π°ΡΠΈΠ½Π°Ρ Ρ Java 5 ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΠΏΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΡΠΈΠΏΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
π13π₯3β€2
Π§ΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°?
Anonymous Quiz
14%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
6%
RuntimeException, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
7%
IllegalStateException, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅Π»ΡΠ·Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ.
73%
Java is The best!, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΡΠΉ.
π10π₯3β€2
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²?
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ². Type inference β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ, ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π·Π° Π²Π°Ρ. ΠΠ° ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠΏΡΠΎΡΠΈΡ Π΄Π΅ΡΠ°Π»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠΎΠ², Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΠΎ ΡΡΡΠΈ, Π²ΠΎΠΏΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ Π² Β«ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?Β», Π° Β«ΡΡΠΎ ΡΡΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ?Β».
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΠΏΡΠΈ ΡΡΠ°Π·Π΅ Β«Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²Β» β diamond operator <>. ΠΠ½ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Java Ρ Π²Π΅ΡΡΠΈΠΈ 7. ΠΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠ° ΠΎΡ raw type.
Π‘ Java 9 diamond operator Π·Π°ΡΠ°Π±ΠΎΡΠ°Π» ΠΈ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²Π½ΠΎ, Π½ΠΎ diamond ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌ β Π²ΡΠ²ΠΎΠ΄ ΠΈ ΡΠ°ΠΊ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π Java 10 Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ var. Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² β ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΡΡΠ°Π²ΠΈΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ.
Π’ΠΈΠΏΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ. Π‘ Java 11 Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ var. Π’Π°ΠΊΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ². Type inference β ΡΡΠΎ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΡΡ, ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π·Π° Π²Π°Ρ. ΠΠ° ΠΎΠ±ΡΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΡΠΏΡΠΎΡΠΈΡ Π΄Π΅ΡΠ°Π»ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠΎΠ², Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π²ΡΠ²ΠΎΠ΄ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΠΏΠΎΠ² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. ΠΠΎ ΡΡΡΠΈ, Π²ΠΎΠΏΡΠΎΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅ Π² Β«ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ?Β», Π° Β«ΡΡΠΎ ΡΡΠΎ ΠΈ ΠΊΠΎΠ³Π΄Π° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ?Β».
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ Π² Π³ΠΎΠ»ΠΎΠ²Ρ ΠΏΡΠΈ ΡΡΠ°Π·Π΅ Β«Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²Β» β diamond operator <>. ΠΠ½ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Java Ρ Π²Π΅ΡΡΠΈΠΈ 7. ΠΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°ΠΌ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΡΠΎΠ±Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠ° ΠΎΡ raw type.
Π‘ Java 9 diamond operator Π·Π°ΡΠ°Π±ΠΎΡΠ°Π» ΠΈ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ².
ΠΠ»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²Π½ΠΎ, Π½ΠΎ diamond ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌ β Π²ΡΠ²ΠΎΠ΄ ΠΈ ΡΠ°ΠΊ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
Π Java 10 Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠΏΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ var. Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² β ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΡΡΠ°Π²ΠΈΡΡΡ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ.
Π’ΠΈΠΏΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ. Π‘ Java 11 Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ° ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ var. Π’Π°ΠΊΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
π13π₯3β€2
Π§Π΅ΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π»ΡΠΌΠ±Π΄Ρ?
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΠΌΠ±Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ β ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΡΠ·ΡΠΊ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΠΊΠ»Π°ΡΡΠ° Π΅ΡΡΡ ΠΏΠΎΠ»Ρ. ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ, ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ»Ρ Π»ΡΠΌΠ±Π΄Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π»ΠΈΡΡ Π·Π°Ρ Π²Π°Ρ ΠΈ effectively final ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΡΠΌΠ±Π΄ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΡΠΎ ΡΠΈΠΏ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠΎΡΠΏ, Π»ΡΠΌΠ±Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ½Π°ΡΡΠΆΠΈ, Π² Π»ΡΠΌΠ±Π΄Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Β«variable is already definedΒ», Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΡΠΊΡΠΎΠ΅Ρ (shadowing) Π²Π½Π΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM, Π΄Π»Ρ Π»ΡΠΌΠ±Π΄Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ .class ΡΠ°ΠΉΠ»Π°, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ invokedynamic ΠΈ ΠΊΠ»Π°ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Π»Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ LambdaMetafactory. Π’Π°ΠΊ ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
@javatasks #java
ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠΈΠΏ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΠΌΠ±Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ β ΠΎΠ½ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ²Π΅Π΄Π΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°. ΠΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΡΠ·ΡΠΊ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ ΠΊΠ»Π°ΡΡΠ° Π΅ΡΡΡ ΠΏΠΎΠ»Ρ. ΠΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΡΠ²ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ, ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ»Ρ Π»ΡΠΌΠ±Π΄Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π»ΠΈΡΡ Π·Π°Ρ Π²Π°Ρ ΠΈ effectively final ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΡΠΌΠ±Π΄ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ. Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΡΠΎ ΡΠΈΠΏ Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ. ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ Π»ΡΠ±ΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ ΠΊΠ»Π°ΡΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΡΠΊΠΎΡΠΏ, Π»ΡΠΌΠ±Π΄Π° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ. ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ½Π°ΡΡΠΆΠΈ, Π² Π»ΡΠΌΠ±Π΄Π΅ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Β«variable is already definedΒ», Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ ΡΠΊΡΠΎΠ΅Ρ (shadowing) Π²Π½Π΅ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ JVM, Π΄Π»Ρ Π»ΡΠΌΠ±Π΄Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ .class ΡΠ°ΠΉΠ»Π°, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈ ΠΎΠ±ΡΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ invokedynamic ΠΈ ΠΊΠ»Π°ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΡΡΡ Π½Π° Π»Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ LambdaMetafactory. Π’Π°ΠΊ ΡΡΠΎ Π»ΡΠΌΠ±Π΄Π°-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠ΅Π΅.
@javatasks #java
π25π₯10π4β€1
Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ?
Anonymous Quiz
37%
Π‘ΠΏΠΈΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½: [1, 2, 3, 4]
11%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
37%
UnsupportedOperationException
8%
RuntimeException
6%
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ Π±Π΅Π· ΠΎΡΠΈΠ±ΠΎΠΊ, Π½ΠΎ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ: [1, 2, 3]
π17π₯5β€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 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.
π₯12π6
Π§ΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
9%
A
7%
B
3%
C
63%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
18%
ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
π₯11π5β€2
ΠΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ 15?
Anonymous Quiz
5%
/api/sum?sum=15
10%
/sum?a=10&b=5
10%
/api/sum?a=10,b=5
5%
/api/sum&a=10&b=5
69%
/api/sum?a=10&b=5
π20π₯6π4
ΠΠ°ΠΊ Π² Π»ΡΠΌΠ±Π΄Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π½Π΅ΡΠ½ΡΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ?
ΠΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π² Π»ΠΎΠ±. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½Π°Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ effectively final. Π’Π°ΠΊΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΡΠΈΠ½.
ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° ΡΡΠ΅ΠΊΠ΅, Π° Π·Π½Π°ΡΠΈΡ Π²ΡΠ΅ΠΌΡ Π΅Π΅ ΠΆΠΈΠ·Π½ΠΈ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΈΠΏΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΡΠΊΠΎΡΠΏΠΎΠΌ ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. ΠΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π»ΡΠΌΠ±Π΄Ρ, Π·Π°Ρ Π²Π°ΡΠΈΠ²ΡΠΈΠΉ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΌΠΎΠ³ Π±Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π½Π°ΡΡΠΆΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π² Π»ΡΠΌΠ±Π΄Ρ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠΏΠΈΡ ΠΆΠΈΠ²Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»ΡΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°. ΠΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ·-Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ β ΠΊΠΎΠΏΠΈΡ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» ΡΡΠ°Π½ΡΡ Π΄Π²ΡΠΌΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²Π΅ΡΠ½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ β Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ.
ΠΠΎΠ»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΌΠ΅Π½ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΡΡΠΏΠ°Π΅Ρ effectively final Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ this.
ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΡΡ ΠΆΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ β ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Ρ Π² ΠΊΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΠ±Π΅ΡΡΠΊΡ: ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΎΠ±ΡΠ΅ΠΊΡ-atomic, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅ΠΌ.
Π₯Π°ΠΊ Ρ ΠΎΠ±Π΅ΡΡΠΊΠΎΠΉ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΈ Π΄Π°ΡΡ ΠΊΠΎΠ΄Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠ΅Π΄Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ, ΡΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΡΠ½ΡΡ.
@javatasks #java
ΠΡΠΎ Π½Π΅Π»ΡΠ·Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π² Π»ΠΎΠ±. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½Π°Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ·Π°Π½Π° Π±ΡΡΡ effectively final. Π’Π°ΠΊΠΎΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΈΡΠΈΠ½.
ΠΠΎΠΊΠ°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π° ΡΡΠ΅ΠΊΠ΅, Π° Π·Π½Π°ΡΠΈΡ Π²ΡΠ΅ΠΌΡ Π΅Π΅ ΠΆΠΈΠ·Π½ΠΈ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΠΎΠ»Π³ΠΎΠΆΠΈΠ²ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Ρ ΠΈΠΏΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΡΠΊΠΎΡΠΏΠΎΠΌ ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. ΠΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Π»ΡΠΌΠ±Π΄Ρ, Π·Π°Ρ Π²Π°ΡΠΈΠ²ΡΠΈΠΉ ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ, ΠΌΠΎΠ³ Π±Ρ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π½ Π½Π°ΡΡΠΆΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈΠ· Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΠΈ ΠΏΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄Π°.
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Π² Π»ΡΠΌΠ±Π΄Ρ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. Π’Π°ΠΊΠ°Ρ ΠΊΠΎΠΏΠΈΡ ΠΆΠΈΠ²Π΅Ρ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»ΡΡΠ΅ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»Π°. ΠΠΎ ΡΡΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΠ·-Π·Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π΅Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ β ΠΊΠΎΠΏΠΈΡ ΠΈ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» ΡΡΠ°Π½ΡΡ Π΄Π²ΡΠΌΡ ΡΠ°Π·Π½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ. ΠΠΎΡΡΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²Π΅ΡΠ½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ β Π½Π΅ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ.
ΠΠΎΠ»Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΌΠ΅Π½ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π·Π°Ρ Π²Π°ΡΠ΅Π½Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΡΡΡΠΏΠ°Π΅Ρ effectively final Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ this.
ΠΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΡΡ ΠΆΠ΅ Ρ ΠΎΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ β ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Ρ Π² ΠΊΡΡΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΎΠ΄Π° ΠΎΠ±Π΅ΡΡΠΊΡ: ΠΎΠ΄Π½ΠΎΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΌΠ°ΡΡΠΈΠ², ΠΎΠ±ΡΠ΅ΠΊΡ-atomic, ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π΅ΠΌ.
Π₯Π°ΠΊ Ρ ΠΎΠ±Π΅ΡΡΠΊΠΎΠΉ ΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΈ Π΄Π°ΡΡ ΠΊΠΎΠ΄Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠ΅Π΄Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½Π°Ρ, ΡΠΎ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΡΠ½ΡΡ.
@javatasks #java
π23π₯8β€2
Π§ΡΠΎ Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊ finally Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅?
ΠΠ»ΠΎΠΊ finally Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π±ΡΠ»ΠΎ Π»ΠΈ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ Π² Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ΅ try ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎΠ³Π΄Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² try, Π½ΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² finally, Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ. ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ catch.
ΠΠΎΠΏΡΠΎΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² finally Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ±ΡΠΎΡΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· try. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· finally Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· try ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π±ΡΡΠ°.
Π’Π°ΠΊΠ°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ, Π»ΡΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ IntelliJ IDEA Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ throw Π²Π½ΡΡΡΠΈ finally.
ΠΠ»ΠΎΠΊ finally Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, Π±ΡΠ»ΠΎ Π»ΠΈ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ Π² Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ΅ try ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, ΠΈΠ»ΠΈ Π½Π΅Ρ. ΠΠΎΠ³Π΄Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² try, Π½ΠΎ ΡΠ»ΡΡΠΈΠ»ΠΎΡΡ Π² finally, Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ. ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ², ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π΅ΡΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ catch.
ΠΠΎΠΏΡΠΎΡ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π΅Ρ Π²ΡΠΎΡΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² finally Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ±ΡΠΎΡΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈΠ· try. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· finally Π·Π°ΠΌΠ΅Π½ΠΈΡ ΡΠΎΠ±ΠΎΠΉ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· try ΠΈ ΠΏΠΎΠΉΠ΄Π΅Ρ Π²Π²Π΅ΡΡ ΠΏΠΎ ΡΡΠ΅ΠΊΡ Π²ΠΌΠ΅ΡΡΠΎ Π½Π΅Π³ΠΎ. ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΏΡΠΎΡΡΡ Π·Π°Π±ΡΡΠ°.
Π’Π°ΠΊΠ°Ρ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΠΎΡΠ»Π°Π΄ΠΊΡ, Π»ΡΡΡΠ΅ ΠΈΠ·Π±Π΅Π³Π°ΡΡ Π΅Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ IntelliJ IDEA Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ throw Π²Π½ΡΡΡΠΈ finally.
β€14π₯7π4
Π§ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ArrayStoreException?
ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠΏΡΡΠ°Π»Π°ΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. Π’Π°ΠΊΠ°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΏΠΎ ΡΠΈΠΏΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Object[] ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»Π΅ΠΌ ΡΠΈΠΏΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΅Π³ΠΎ Ρ ΡΠ°Π½ΠΈΡ. ΠΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ArrayStoreException.
Π‘ΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ heap pollution Π² ΡΠ»ΡΡΠ°Π΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ². Π’ΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ΅ΠΆΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΠΏΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
// ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½Ρ!
List<Object> x = new ArrayList<String>();
ΠΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠΏΡΡΠ°Π»Π°ΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. Π’Π°ΠΊΠ°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ².
ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΠΏΠΎ ΡΠΈΠΏΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΡΠ΅Π· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Object[] ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ²:
Object x[] = new String[3];
x[0] = new Integer(0);
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π±Π΅ΡΠ΅ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»Π΅ΠΌ ΡΠΈΠΏΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°. ΠΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π΅Π³ΠΎ Ρ ΡΠ°Π½ΠΈΡ. ΠΠΌΠ΅Π½Π½ΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ArrayStoreException.
Π‘ΠΈΡΡΠ°ΡΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ heap pollution Π² ΡΠ»ΡΡΠ°Π΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ². Π’ΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΠ°Ρ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΡΠ΅ΠΆΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ°ΠΏΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
// ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ β Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½Ρ!
List<Object> x = new ArrayList<String>();
β€6π4π₯2
ΠΠ°ΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²?
Object.clone() ΠΈ System.arraycopy(). ΠΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΌΡΠ΅ Π±ΡΡΡΡΡΠ΅ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ . Π£Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° clone() ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². arraycopy(), Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ.
Arrays.copyOf(), Arrays.copyOfRange() ΠΈ Π²ΡΠ΅ ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ. Π£ΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΡΡΡΠΈ Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ System.arraycopy().
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΡΡΠΈΠΌ. Arrays.stream(sourceArray).toArray(). Π£Π΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠΎΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΈ ΠΏΡΠΎΡΠΈΠ΅. ΠΡΠΈΠΌΠ΅Ρ β ΠΊΠ»Π°ΡΡ SerializationUtils ΠΈΠ· Apache Commons.
ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ β ΠΎΠ±Π° ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΈΡΠΎΠ³Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΊΠΎΠΏΠΈΡ β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π²ΡΡΡΠ½ΡΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ new ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π·Π°ΡΠ΅ΠΌ Π² ΡΠΈΠΊΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Stream API Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ.
Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ, Π½ΠΎ ΡΠΆΠ°ΡΠ½ΡΠΉ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠΏΠΎΡΠΎΠ± Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ+Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠ»ΠΎΡ ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π°, Π½ΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Object.clone() ΠΈ System.arraycopy(). ΠΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΌΡΠ΅ Π±ΡΡΡΡΡΠ΅ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ . Π£Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° clone() ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ Π²Π΅ΡΡ ΠΌΠ°ΡΡΠΈΠ² Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ². arraycopy(), Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ², Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ.
Arrays.copyOf(), Arrays.copyOfRange() ΠΈ Π²ΡΠ΅ ΠΈΡ ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠΈ. Π£ΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ½ΡΡΡΠΈ Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ System.arraycopy().
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π· ΡΡΡΠΈΠΌ. Arrays.stream(sourceArray).toArray(). Π£Π΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ½ΠΎ Π²ΡΡΡΠΎΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Π‘ΡΠΎΡΠΎΠ½Π½ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ. ΠΠ±ΡΡΠ½ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ², ΠΈ ΠΏΡΠΎΡΠΈΠ΅. ΠΡΠΈΠΌΠ΅Ρ β ΠΊΠ»Π°ΡΡ SerializationUtils ΠΈΠ· Apache Commons.
ΠΡΠ΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΎΡΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ β ΠΎΠ±Π° ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΈΡΠΎΠ³Π΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°ΡΡ Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΊΠΎΠΏΠΈΡ β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ Π²ΡΡΡΠ½ΡΡ. Π‘Π½Π°ΡΠ°Π»Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ new ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΡΡΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π·Π°ΡΠ΅ΠΌ Π² ΡΠΈΠΊΠ»Π΅ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΏΠΈΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². Stream API Π·Π΄Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ.
Π‘Π°ΠΌΡΠΉ Π±ΡΡΡΡΡΠΉ, Π½ΠΎ ΡΠΆΠ°ΡΠ½ΡΠΉ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠΏΠΎΡΠΎΠ± Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π° Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² β ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ+Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. Π‘Π»ΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΠΌΠ°ΡΡ ΠΎΠΏΡΠ°Π²Π΄Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠ»ΠΎΡ ΠΎΠΌΡ ΡΠΏΠΎΡΠΎΠ±Ρ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½Π°, Π½ΠΎ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ°, ΠΈΠ»ΠΈ Π΄Π»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
β€8π8π₯°3
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΏΠΎΠΉΠΌΠ°ΡΡ Error?
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, Error ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Throwable ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ Π² Π±Π»ΠΎΠΊ catch. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Error β Π½Π΅ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, Π»ΠΎΠ²ΠΈΡΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΡΠΌΡΡΠ»Π°.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ±ΡΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠ° VirtualMachineError ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ JVM Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°: OutOfMemoryError ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², StackOverflowError ΡΠ΅ΡΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΡ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²Π°, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π»ΠΎΠ²ΠΈΡΡ Error Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Ρ Π² ΡΠ΅ΠΊΡΠΈΠΈ throws ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΊ ΠΈ RuntimeException, Error β ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ unchecked exception.
Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, Error ΠΊΠ°ΠΊ ΠΈ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ Throwable ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΉΠΌΠ°ΡΡ Π² Π±Π»ΠΎΠΊ catch. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π²Π°Π»ΠΈΠ΄Π½ΡΠΉ ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ° Error β Π½Π΅ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ°, Π»ΠΎΠ²ΠΈΡΡ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΡΠΌΡΡΠ»Π°.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π²ΡΠ±ΡΠΎΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠ° VirtualMachineError ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ JVM Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ»ΠΎΠΌΠ°Π½Π½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°: OutOfMemoryError ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², StackOverflowError ΡΠ΅ΡΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΡ ΡΡΠ΅ΠΊΠ° Π²ΡΠ·ΠΎΠ²Π°, ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
Π’Π°ΠΊ ΠΊΠ°ΠΊ Π»ΠΎΠ²ΠΈΡΡ Error Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π΅Ρ Π² ΡΠ΅ΠΊΡΠΈΠΈ throws ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΠ°ΠΊ ΠΈ RuntimeException, Error β ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡ unchecked exception.
π₯12π10β€5