Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΈ ΡΡΡΡΠ΅ ΡΠΈΠΏΡ raw type Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
ΠΠΎΠΏΡΠΎΡΠΎΠ²:
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠΎΠΉ ΡΠΈΠΏ?
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠ° Java ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
JLS 4.8 ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ·:
Π’ΠΈΠΏ ΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ Π²Π·ΡΡΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π±Π΅Π· ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡΠ΅Π³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ°.
Π’ΠΈΠΏ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΠΈ:
mt ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ (ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ) ΠΏΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΏΡΠ½ΠΊΡΡ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ; inn ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΠΎ ΡΡΠ΅ΡΡΠ΅ΠΌΡ ΠΏΡΠ½ΠΊΡΡ.
mt1 ΠΈ mt2 ΠΎΠ±Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ°, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠ°Ρ ?
ΠΠΎ ΡΡΡΠΈ, Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ². Π’ΠΎ Π΅ΡΡΡ, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΊΠΎΠ½Π½ΡΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
Π§Π΅ΠΌ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΠΏΠ°?
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΈΡΠ°ΡΠ° ΠΈΠ· Effective Java 2nd Edition, ΠΏΡΠ½ΠΊΡ 23. ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ :
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
Π§Π΅ΠΌ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠ°?
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°:
ΠΠ΅ΡΠ½ΡΡΡΡΡ ΠΊ JLS 4.8:
Π‘ΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΡ (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠΏΠ΅ΡΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ) Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΡΠΏΠ΅ΡΠΊΠ»Π°ΡΡΠΎΠ² (ΡΡΠΏΠ΅ΡΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²) Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
ΠΠΎΠ·ΡΠΌΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
JLS 4.6 ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΎΠ±ΡΡΡΠ½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠΈΡΠ°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΡΠΈΠ³Π½Π°ΡΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠ΄Π°Π»Π΅Π½Π°.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΠΈΡΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΠΏΠ°.
ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ?
ΠΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΡΠΈΡΠ°ΡΠ° ΠΈΠ· JLS 4.8:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΡΠΏΠΊΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² ΠΊΠΎΠ΄Π΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΠΈ Π² ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java, Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. ΠΠΏΠΎΠ»Π½Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π±ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ².
Effective Java 2nd Edition ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π£ΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΡΠ°Π·ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΠΎ? ΠΠ»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ.
ΠΡΡΡ Π»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ?
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΈΠ·-Π·Π° Π½Π΅ΠΏΠ°ΡΠ΅Π½ΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Java Π΅ΡΡΡ Π΄Π²Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π³Π΄Π΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅:
Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π² Java, ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΠ°ΡΡΠΎ ΡΠ»ΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅?
Π₯ΠΎΡΡ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΡΠ΅ ΠΆΠ΅ ΡΠ»ΡΡΠ°Π»ΠΈΡΡ
Π‘ΡΠ°ΡΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π±Π΅Π· ΡΠΈΠΏΠΎΠ² Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΡΡΠΎ ΠΎΠ½ Ρ
ΡΠ°Π½ΠΈΡ Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ.
ΠΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΠ±ΡΡΠ²Π»ΡΠ» Π±Ρ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ΄Π΅Π»Π°Π» Π±Ρ ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ.
ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ CompareAble ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ compareTo(MyCompareAble) Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΠΎΡΠ΅ΠΌΡ Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ :
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ: Generics ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ΅ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΡ Java, ΡΡΠΎ ΠΈ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ. ΠΠ°Π³ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ:
ΠΡΠΎ ΡΠΎΡ ΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Π±Ρ, Π΅ΡΠ»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΠΏΡ. Π₯ΠΎΡΡ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Ρ CompareAble ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Ρ, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄Π²Π΅ compareTo ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ a, MyCompareAble Π° Π΄ΡΡΠ³ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Object ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ.
ΠΠ°ΠΊΠΈΠ΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ
ΠΡΠ»ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° ΠΎΠΏΡΡΠ΅Π½, Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ Box :
ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°Π·Π½Π°ΡΠΈΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠΈΠΏΡ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΈΠΏΠ΅:
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΎΠ±Ρ ΠΎΠ΄ΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ², ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ ΠΏΠ΅ΡΠ΅Ρ Π²Π°Ρ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ².
Π Π°Π·Π΄Π΅Π» Erasure Type ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ.
ΠΠ΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΠΏΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠΈΠΌΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: Example.java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°ΡΠΎΠ³ΠΎ API, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Java-Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ ΡΡΠ°Π»ΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠΏΠΈΡΠΎΠΊ, Π΅Π³ΠΎ Π½Π΅ Π²ΠΎΠ»Π½ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠΎ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π΅Π³ΠΎ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π½ΠΎ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ Π΅Π³ΠΎ ΠΊ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠΌΡ ΡΠΈΠΏΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ, Π²Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅ Β«Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉΒ» ΡΠ°ΠΊΡΠΎΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ΄ΡΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΈΠ· Π²ΡΠ·ΠΎΠ²Π° get, ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ MyObject. ΠΡΠΎΡ ΡΠ°ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π΄Π²ΠΈΠΆΡΡΠΈΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ Π΄Π»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ². ΠΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΎ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Ρ, Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΎΡΠΌΡ.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΠ°ΡΡΠΎ ΡΠ»ΡΡΡ, ΡΡΠΎ Π΅Π³ΠΎ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅?
Β«ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡΒ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠΎΠ³ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΌΡ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠ°ΠΊΠ°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π»ΡΡΡΠ΅?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Ρ ΠΎΡΠ΅Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ List Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ‘names’ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ:
ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π² Java Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΠΎΡΡΠ°ΡΡΠ΅: ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏ PECS
Π Π°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π² Π»ΡΠ±ΠΎΠΉ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠΎΡΠ΅ΡΠ°ΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΡΠΈΠΏΡ.
Π ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ Β«ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π΄Π»Ρ ΡΠ°ΠΌΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ Β» ΠΌΡ ΡΠ°ΡΡΠΊΠ°Π·Π°Π»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ (generics), Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΡΠΈΠΏΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ. Π’Π°ΠΌ ΠΆΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΈ ΠΏΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ (boundings) ΠΈ wildcards. ΠΠ΅Π· ΡΡΠΈΡ ΠΎΡΠ½ΠΎΠ² Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π΄Π°Π»ΡΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΎΡΠ²Π΅ΠΆΠΈΡΠ΅ Π·Π½Π°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΠ· ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅:
Π€ΡΠ»ΡΡΠ΅ΠΊ-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ. ΠΡΠ±ΠΈΠΌΡΠΉ ΡΡΠ΅ΠΊ: Java + Angular, Π½ΠΎ Π² Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π³ΠΎΡΠΎΠ²Π° ΠΏΠΈΡΠ°ΡΡ Ρ ΠΎΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΠ΄Π°.
ΠΠΎΡΠ΅ΠΌΡ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ Π½Π΅ Π΄ΠΎΠΆΠΈΠ²Π°Π΅Ρ Π΄ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΠΈΠ· ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΡΡΠΊΠ°Π·Π° ΠΎ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°Ρ : ΡΠ°ΠΌ Π±ΡΠ» ΠΊΠ»Π°ΡΡ Box β ΠΊΠΎΡΠΎΠ±ΠΊΠ° Π΄Π»Ρ ΡΠ±ΠΎΡΠ° ΠΌΡΡΠΎΡΠ°: ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π² Π½Π΅Ρ ΠΈΠ»ΠΈ ΠΈΠ·Π²Π»Π΅ΡΡ ΠΈΠ· Π½Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΏΠΎΠ΄ΡΡΠ°Π²ΠΈΠΌ Π²ΠΌΠ΅ΡΡΠΎ T ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΏ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Paper β Π΄Π»Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅ΠΌ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π±ΡΠΌΠ°Π³Ρ:
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ:
ΠΡΠ° Π·Π°ΠΏΠΈΡΡ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ, Π½ΠΎ ΠΎΠ½Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ Ρ ΡΠ΅ΠΌ, Π²ΠΎ ΡΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ class-ΡΠ°ΠΉΠ» Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠ½ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½ class-ΡΠ°ΠΉΠ» Π΄Π»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΡΠΈΠΏΠ°.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΡΠΈΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ΅, Π·Π°ΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ( unbounded) ΡΠΈΠΏΠΎΠΌ Object, Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ( bounded) β Π½Π° ΡΡΠΈ Π³ΡΠ°Π½ΠΈΡΡ. ΠΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ type erasure.
ΠΡΠΎΠΌΠ΅ ΡΡΠΈΡΠ°Π½ΠΈΡ (ΠΈΠ½ΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ Β«Π·Π°ΡΠΈΡΠ°Π½ΠΈΡΒ») ΡΠΈΠΏΠΎΠ², ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (cast) ΠΊ Π½ΡΠΆΠ½ΠΎΠΌΡ ΡΠΈΠΏΡ ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΡΠ΅ bridge-ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ Π² ΠΊΠ»Π°ΡΡΠ°Ρ -Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°Ρ .
ΠΡΠΈΠΌΠ΅Ρ 1. Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ° Π±Π΅Π· Π³ΡΠ°Π½ΠΈΡ
ΠΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠΎΠ² Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° Object. ΠΠΎΡ ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°-ΠΊΠΎΡΠΎΠ±ΠΊΠΈ:
ΠΡΠΈΠΌΠ΅Ρ 2. Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Π΄Π»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ° Ρ Π³ΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ
ΠΠ±ΡΡΠ²ΠΈΠΌ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ c ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π΅ΡΡ Ρ ( upper bounding):
ΠΠΎΡ ΡΡΠΎ ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
ΠΡΠΈΠΌΠ΅Ρ 3. Bridge-ΠΌΠ΅ΡΠΎΠ΄
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π΄Π»Ρ Π±ΡΠΌΠ°Π³ΠΈ ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠΌ Π² Π½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ putItem:
ΠΡΠΎΠΌΡ ΠΊΠ»Π°ΡΡΡ Π½Π΅ Π²ΡΡ ΡΠ°Π²Π½ΠΎ, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ ΠΊ Π½Π΅ΠΌΡ Π² putItem, β Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΡΠΈΠΏΠ° Paper. ΠΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΏΡΠΈΠ΄ΡΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡΡΡΠΈΡΡ ΠΊΠ»Π°ΡΡ β Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Π½Π΅Π³ΠΎ bridge-ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°:
Π Π²ΠΎΡ Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΎΡ Π½ΠΈΡ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
ΠΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ | ΠΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ |
---|---|
> | Box |
Box | |
List [] | List[] |
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π·Π½Π°Π΅ΡΠ΅ ΠΏΡΠΎ type erasure ΠΈ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ, Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π²ΠΎΠΏΡΠΎΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅Π»ΡΠ·Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-Exception:
Π ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ try catch ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΈΠΏ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΠ»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΏ Π±ΡΠ»ΠΎ Π±Ρ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π° ΠΏΠΎΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π°ΠΆΠ΅ Π½Π΅ Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ. ΠΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΡ Throwable ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌ.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΊΠ»Π°ΡΡΠ°
ΠΡΠΈΠΌΠ΅Ρ 1. ΠΠ»Π°ΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ β Π½Π΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ, Π½Π΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΊΠ»Π°ΡΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° T ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΏ, ΡΡΠΎ ΠΌΡ ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ β ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ Paper.
ΠΡΠΈΠΌΠ΅Ρ 2. ΠΠ»Π°ΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ ΠΈ ΡΠ°ΠΌ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ Box ΠΈ SuperGenericBox Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ Π±ΡΠΊΠ²ΠΎΠΉ T (ΠΎΡ type) β ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ°ΡΡ Π»ΡΠ±ΡΡ. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²Π°ΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π±ΡΠΊΠ²Ρ Π±ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅, ΠΈΠ½Π°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ ΡΠ°Π·Π±Π΅ΡΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ 3. ΠΠ»Π°ΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ β Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ Ρ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΠ΄Π΅ΡΡ ΡΠΆΠ΅ Π½Π΅ ΠΎΠ΄ΠΈΠ½, Π° Π΄Π²Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΠ΄ΠΈΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, Π° Π²ΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΊΠ°ΠΊ-Π½ΠΈΠ±ΡΠ΄Ρ Π΅ΡΡ β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ newMethod Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Π£ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° ΠΊΠ»Π°ΡΡΠ°-Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ Π½ΠΎΠ»Ρ (ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ). ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΏΡΠΎ Π²ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠΈΠΏ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΈΠ· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΊΠ»Π°ΡΡΠ°-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°.
Π§ΡΠΎ Π½Π΅ ΡΠ°ΠΊ Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΡΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ²-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠ²
Π Java ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, Π΅ΡΠ»ΠΈ ΡΠΈΠΏΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ: ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΠ»ΠΈ Π»Π΅ΠΆΠ°Ρ Π² ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, PaperBox β Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ Box, ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π½ΠΈΠΆΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ:
Π ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ is a (ΡΠ²Π»ΡΠ΅ΡΡΡ): Π±ΡΠΌΠ°ΠΆΠ½Π°Ρ ΠΊΠΎΡΠΎΠ±ΠΊΠ° β ΡΡΠΎ ΠΊΠΎΡΠΎΠ±ΠΊΠ° (ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΡΠΎΠ±ΠΊΠΎΠΉ). ΠΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ PaperBox β ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏ (subtype) Box. ΠΡΠΈ ΡΡΠΎΠΌ Box β ΡΡΠΏΠ΅ΡΡΠΈΠΏ PaperBox.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΠΎΠ·ΡΠΌΡΠΌ Π½Π΅ ΠΏΡΠΎΡΡΡΡ ΠΊΠΎΡΠΎΠ±ΠΊΡ, Π° Π΅Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-Π²Π°ΡΠΈΠ°Π½Ρ ( Box ), Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅ΠΌ ΠΊΠ»Π°ΡΡΡ ΡΠ°Π·Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΌΡΡΠΎΡΠ°: Paper, Glass ΠΈ ΡΠΎΠΌΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΈΠΏΡ β Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ Garbage:
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΊΠ°ΠΊ Garbage, ΡΠ°ΠΊ ΠΈ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏ:
ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Box ΡΡΠ°Π½Π΅Ρ ΡΠΈΠΏΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π°? Π‘ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄ΡΡΠ³ΠΎΠΉ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΡΠΈΠΏ? ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Π ΡΠ±Π΅Π΄ΠΈΠΌΡΡ, ΡΡΠΎ Π·Π°ΠΌΠ΅Π½Π° ΡΡΡ Π½Π΅ ΠΏΡΠΎΠΉΠ΄ΡΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ Paper β ΠΏΠΎΠ΄ΡΠΈΠΏ Garbage, Box
ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½Ρ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ A β ΠΏΠΎΠ΄ΡΠΈΠΏ B, Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΎΡ A Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠΌ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ° ΠΎΡ B.
ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ, ΠΌΠ°ΡΡΠΈΠ²Ρ Π² Java ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½Ρ: Π΅ΡΠ»ΠΈ A β ΠΏΠΎΠ΄ΡΠΈΠΏ B, A[] β ΠΏΠΎΠ΄ΡΠΈΠΏ B[].
ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΡΠΈΠΏΠ°ΠΌΠΈ
ΠΠΎΡΡΠ΅Π½ΠΈΡΡΠ΅ΠΌΡΡ ΡΠ½Π°ΡΠ°Π»Π° Π½Π° ΠΏΡΠΎΡΡΡΡ ΡΠΈΠΏΠ°Ρ ΠΈ Π²ΡΠΏΠΎΠΌΠ½ΠΈΠΌ, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΡΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ ΡΠΈΠΏΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ, Π΅ΡΠ»ΠΈ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° β ΡΡΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊ:
ΠΠΎΠ±Π°Π²ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌ ΡΠΎ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ:
ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΅ΡΡ ΠΏΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ. ΠΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²Π΅ΡΠ½ΡΠΌ, Π΅ΡΠ»ΠΈ:
ΠΠ²ΡΡΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ Π»ΡΡΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΠΊΠΎΠ΄:
ΠΡΠ°Π²Π΄Π°, Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΈΠΏΠΎΠ² ( unchecked warning):
Note: GlassBox.java uses unchecked or unsafe operations.
ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ: ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π»ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° Garbage, Π° ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Ρ ΠΎΡΡΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΏΠΈΡΠΎΠΊ. Π’Π°ΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° Garbage, Π° ΠΌΠΎΠ³ΡΡ ΠΈ Π»ΡΠ±ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ β Π²ΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΈ ΡΡΠ΅Π²ΠΎΠΆΠ½ΠΎ.
ΠΠ°ΡΠΎ Π΅ΡΠ»ΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ β Ρ wildcard Π±Π΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, ΡΠΎ ΠΏΡΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ:
ΠΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΠΏΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
Π ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° Π½Π°Π·Π²Π°Π½ S, Π° Π½Π΅ T, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΡΡΠ°ΡΡΡΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ.
Π Π²ΠΎΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ° Π² ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π½Π΅Π»ΡΠ·Ρ:
ΠΠΎΠ»ΡΡΠΈΠ»ΡΡ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π° ΠΏΡΠΎΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ· Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΏΠΎΠΊΠΎΠ΅Π½, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΊΠ»Π°ΡΡΠ΅ Box ΡΡΠ°Π½Π΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΈΠΌ ΠΏΠΎΡΠ»Π΅ type erasure β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΌΠ΅Π½ΡΠ½ Π½Π° Object.
ΠΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΌΠ΅ΡΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ:
ΠΠ°ΠΊ wildcards Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ Β«ΠΏΠΎΡΡΡΡΒ» ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΈ Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΡΠΈΠ½ΡΠΈΠΏ PECS
ΠΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠ², ΡΠ΄ΠΎΠ±Π½Ρ wildcards Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ: List ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΡΡΠΎΡΡΡ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° Paper ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠ², Π° Π² List ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° Paper ΠΈ Π²ΡΠ΅Ρ ΡΡΠΏΠ΅ΡΡΠΈΠΏΠΎΠ² β Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Garbage ΠΈΠ»ΠΈ Object.
Π‘ wildcards ΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠΌΠΈ Π΅ΡΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π²ΡΠΎΠ΄Π΅ ΡΠ΅Ρ , ΡΡΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅, Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΏΠΎΠ»Π½ΡΡ ΠΊΠ°ΡΡΡΠΊΡ: ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΈΠ· Π½ΠΈΡ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, Π΄Π°ΠΆΠ΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏ β ΠΏΡΠΈΠ½ΡΠΈΠΏ PECS.
PECS β Producer Extends, Consumer Super. ΠΠ³ΠΎ ΡΡΡΡ:
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Ρ extends Π½Π΅Π»ΡΠ·Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ, Π° ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Ρ super Π½Π΅Π»ΡΠ·Ρ ΡΠΈΡΠ°ΡΡ? ΠΡΠΎΠ΄Π΅ Π±Ρ Π²ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½ΠΎ Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ:
ΠΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΡΠ΄Π° ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ Paper β Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ° Garbage:
ΠΠΎΠ»ΡΡΠΈΠΌ ΠΎΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ°Π΄Π½ΠΎ, ΡΠΎΠ³Π΄Π°, ΠΌΠΎΠΆΠ΅Ρ, Ρ ΠΎΡΡ Π±Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Garbage ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ?
Π ΡΠ½ΠΎΠ²Π° Π½Π΅Ρ. ΠΡΠΈΠ½ΡΠΈΠΏ PECS Π½Π΅ ΡΠΎΠ²ΡΠ°Π» β ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ β null. ΠΠΎΡ ΡΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ:
Π‘ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ, ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ½ΠΈΠ·Ρ:
ΠΠΎΠ±Π°Π²ΠΈΠΌ ΡΡΠ΄Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΈΠΏΠ° Paper:
Π ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΆΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ. ΠΡΠ»ΠΈ Π²Π΅ΡΠΈΡΡ PECS, Ρ Π½Π°Ρ ΡΡΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡ:
ΠΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π²ΡΡ Π½ΡΠ°Π²ΠΈΡΡΡ β Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅Ρ. ΠΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΏΡΠΎΡΠ΅ΠΌ, Π½Π°ΡΠ½ΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Ρ ΠΎΡΠΈΠΌ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΏΠ° Paper ΠΈΠ»ΠΈ ΡΠΈΠΏΠ°, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠ³ΠΎ Ρ Π½ΠΈΠΌ:
ΠΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ° PECS ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ· ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ ΡΠ½ΠΈΠ·Ρ, Π½Π΅Π»ΡΠ·Ρ Π±Π΅Π· ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° (cast) ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π³ΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π΄Π° ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΎΠΆΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅, ΡΡΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ, β ΡΠΈΠΏ Object:
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΠΈΠΏ PECS Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ ΠΈΠ· producer, Π° ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² customer. ΠΡ Π½Π΅ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π»ΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°, Π½ΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΠ°Π±Π»ΠΈΡΠΊΡ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΡΠ°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π²ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°:
Π’ΠΈΠΏ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ | Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΈΡΠ°ΡΡ | Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ |
---|---|---|
extends SomeType> | ΠΠ±ΡΠ΅ΠΊΡΡ SomeType ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΡΡΠΏΠ΅ΡΡΠΈΠΏΠΎΠ² | Π’ΠΎΠ»ΡΠΊΠΎ null |
super SomeType> | ΠΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° Object | ΠΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° SomeType ΠΈ Π²ΡΠ΅Ρ Π΅Π³ΠΎ ΠΏΠΎΠ΄ΡΠΈΠΏΠΎΠ² |
Π Π΄Π°ΠΆΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π½Π°ΡΠΈΡΠΎΠ²Π°Π»ΠΈ:
Π’Π΅ΠΏΠ΅ΡΡ ΡΠΎΡΠ½ΠΎ Π½Π΅ Π·Π°ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ π
ΠΡΡ Π±ΠΎΠ»ΡΡΠ΅ Ρ ΠΈΡΡΠΎΡΡΠ΅ΠΉ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Java β Π½Π° ΠΊΡΡΡΠ΅ Β«ΠΡΠΎΡΠ΅ΡΡΠΈΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ». ΠΠ°ΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΈ ΠΏΠΎΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΡΠΎΠΈΡΡΡΡ Π½Π° ΡΠ°Π±ΠΎΡΡ.
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π² Java
ΠΠΎΡΠ΅ΠΌΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½Ρ? Π£Π·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ ΠΈ ΡΡΠΎ Ρ ΡΡΠΈΠΌ Π΄Π΅Π»Π°ΡΡ.
1. Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΠΊΡΠ°ΡΠΊΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΈΠΏΡ rawtypes, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ.
2. ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π’ΠΈΠΏΡ
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ β ΡΡΠΎ ΠΈΠΌΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠ° Π±Π΅Π· Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠ°:
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½Ρ ΠΏΡΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠΈ Ρ Π½Π΅ΡΠΎΠ΄ΠΎΠ²ΡΠΌ ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΠΎΠ±Π΅ΡΠΊΡΡΠ°ΠΆΠΈΠ²Π°Π΅Ρ. ΠΡΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ:
3. ΠΠ΅Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ Π½Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΠ΅Ρ ΠΈ ΠΎΠ±ΡΡΡΠ½ΡΠ΅Ρ ΡΠ΅Π±Ρ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ List β ΡΡΠΎ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ String s. ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΌΡ ΡΠΈΠΏΡ Π½Π΅ Ρ Π²Π°ΡΠ°Π΅Ρ ΡΡΠΎΠΉ ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌ ΠΈ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ API.
4. ΠΠ΅ Π’ΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠΎ, ΡΠΎΠ·Π΄Π°Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ List ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ΠΉ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ List ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ Π½Π΅ΠΌΡ Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ :
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΈΠ· β Π·Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ²:
5. ΠΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΏΠΎΠ² Π² Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΌ ΡΠΈΠΏΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΈΡΠΈΠ½Π½ΠΎ-ΡΠ»Π΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ method ΠΏΠΎΠ»ΡΡΠ°Π» ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° 1 Π½Π°ΡΠ΅Π³ΠΎ List ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° Method/|:
6. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π‘ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΈ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ Π² Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅.
ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ, ΠΈ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· ΡΡΠΈΡ ΠΊΠ°ΡΠ°ΡΡΡΠΎΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π² Java ΠΠ±ΡΡΡΠ½Π΅Π½ΠΎ
Π£Π·Π½Π°ΠΉΡΠ΅ ΠΎ Π²Π°ΠΆΠ½ΠΎΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ΅ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ Java ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ°.
1. ΠΠ±Π·ΠΎΡ
Π ΡΡΠΎΠΉ ΠΊΡΠ°ΡΠΊΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Ρ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π² ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ Java, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ².
2. Π§ΡΠΎ Π’Π°ΠΊΠΎΠ΅ Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ Π’ΠΈΠΏΠ°?
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΡΠ½ΠΈΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΡΠΈΠΏ E ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠΈΠΏΠΎΠΌ ΠΠ±ΡΠ΅ΠΊΡΠ° :
ΠΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
3. Π’ΠΈΠΏΡ ΡΡΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΊΠ»Π°ΡΡΠΎΠ² (ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ) ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
3.1. Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΠ»Π°ΡΡΠ°
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π‘ΡΠ΅ΠΊ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ°ΡΡΠΈΠ²Π°:
ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° E Π½Π° ΠΠ±ΡΠ΅ΠΊΡ :
Π ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° E ΠΏΡΠΈΠ²ΡΠ·Π°Π½:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° E ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, Π‘ΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΡΠΌ Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ :
3.2. Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ Π’ΠΈΠΏΠ° ΠΠ΅ΡΠΎΠ΄Π°
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ Π»ΡΠ±ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° E Π½Π° ΠΠ±ΡΠ΅ΠΊΡ :
ΠΠ»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠ° ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°:
Π£ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° E ΡΠ΄Π°Π»Π΅Π½ ΠΈ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° Π‘ΠΎΠΏΠΎΡΡΠ°Π²ΠΈΠΌΡΠΉ:
4. ΠΡΠ°ΠΉΠ½ΠΈΠ΅ Π‘Π»ΡΡΠ°ΠΈ
ΠΠ½ΠΎΠ³Π΄Π° Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΡΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΠΈΠ· ΡΠΈΠ³Π½Π°ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΡΠ°ΡΡΠΈΡΡΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠΎΡΠ»Π΅ ΡΡΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠ° Ρ Π½Π°Ρ Π΅ΡΡΡ:
ΠΠΎΡΡΠΎΠΌΡ Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎ ΠΏΠΎΠΏΡΡΠΊΠ° Π²ΡΡΠ°Π²ΠΈΡΡ ΡΡΡΠΎΠΊΡ ΠΈ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ClassCastException ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡ, Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ push ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ.
4.1. ΠΠΎΡΡΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ
Π§ΡΠΎΠ±Ρ ΡΠ΅ΡΠΈΡΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΏΠΎΠ³ΡΠ°Π½ΠΈΡΠ½ΡΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΡΡΠ°. ΠΡΠΎ ΡΠΈΠ½ΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Java ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π³Π΄Π΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠ³ΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΈΠ»ΠΈ Π±ΡΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΌΠΈ.
Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Java ΡΠΎΡ ΡΠ°Π½ΡΠ΅Ρ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ, Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠΈΠ³Π½Π°ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ Π¦Π΅Π»ΡΠΌ ΡΡΠ΅ΠΊΠΎΠΌ s push(Π¦Π΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ) ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΈ Π‘ΡΠ΅ΠΊΠΎΠΌ s push(ΠΎΠ±ΡΠ΅ΠΊΡ) ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ·Π΄Π°Π΅Ρ Π·Π΄Π΅ΡΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠΎΡΡΠ°:
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π‘ΡΠ΅ΠΊ ΠΌΠ΅ΡΠΎΠ΄ ΠΊΠ»Π°ΡΡΠ° push ΠΏΠΎΡΠ»Π΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ° Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ push ΠΌΠ΅ΡΠΎΠ΄ Π¦Π΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ° ΠΊΠ»Π°ΡΡΠ°.
5. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π ΡΡΠΎΠΌ ΡΡΠ΅Π±Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠ±ΠΈΠΈ ΠΌΡ ΠΎΠ±ΡΡΠ΄ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΡΡΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΠΏΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± ΡΡΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΡ :
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΡΡΠΎΠΉ ΡΠΈΠΏ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ?
ΠΠΎΠΏΡΠΎΡΡ:
ΠΠ’ΠΠΠ’Π«
ΠΡΠ²Π΅Ρ 1
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ?
Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠ° Java ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
JLS 4.8 ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΈΠ·:
Π’ΠΈΠΏ ΡΡΡΠ»ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π±Π΅Π· ΡΠΏΠΈΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠΈΠΏΠ°.
Π’ΠΈΠΏ ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ.
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΡΡΠΈΠΉ:
mt ΠΈΠΌΠ΅Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΈΠΏ (ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ) ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΌΠ°ΡΠΊΠ΅ΡΠ° Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ; inn ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΡΡΠ΅ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΌΠ°ΡΠΊΠ΅ΡΠ°.
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΡΡΡ ΡΠΈΠΏΠ°Ρ ?
ΠΠΎ ΡΡΡΠΈ, ΡΡΡΡΠ΅ ΡΠΈΠΏΡ Π²Π΅Π΄ΡΡ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ². Π’ΠΎ Π΅ΡΡΡ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°ΠΊΠΎΠ½Π½ΠΎ.
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π²Π°Ρ ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
ΠΠ°ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΈΠΏ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ°?
ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΠΈΡΠ°ΡΠ° ΠΈΠ· Effective Java 2nd Edition, Item 23: ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ raw-ΡΠΈΠΏΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅:
ΠΡΠ»ΠΈ Π²Ρ ΡΠΊΠ°Π·Π°Π»ΠΈ appendNewObject Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° raw type List as, ΡΠΎ ΡΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΏΠΎΡΠ΅ΡΡΠ΅ΡΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΎΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ².
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
ΠΠ°ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠΈΠΏ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠ°?
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°:
ΠΠ΅ΡΠ½ΡΡΡΡΡ ΠΊ JLS 4.8:
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΠΏΠ° ΡΡΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΈΠ»ΠΈ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠΈΠΏ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ. Π’Π°ΠΊΠΎΠΉ ΡΠΈΠΏ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ.
Π Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠΏ raw, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ, ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΈ Π½Π΅ static ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π°Π»ΡΡΡΡΡ.
ΠΠΎΠ·ΡΠΌΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
JLS 4.6 ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΠΎΠ±ΡΡΡΠ½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΠΈΠΏ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°ΡΡΡΡ ΡΡΠΈΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΡΡΠΈΡΠ°Π΅ΡΡΡ.
Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠ³Π½Π°ΡΡΡΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠΈΠΏΠ°.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΎΡΡΠ΅ΡΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡΡΠ»ΠΈ ΠΎΡ ΠΠ°ΡΡΠΈΡΠΈΠΎ Π§ΠΈΠΌΠ°Π΄Π°ΠΌΠΎΡΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΈ ΠΠ»Π΅ΠΊΡ ΠΠ°ΠΊΠ»ΠΈ, ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π°Π²ΡΠΎΡΠΎΠ² JLS, ΠΎ ΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: https://bugs.openjdk.java.net/browse/JDK-6400189. (ΠΠΎΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ.)
ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ?
ΠΠ΄Π΅ΡΡ Π΄ΡΡΠ³Π°Ρ ΡΠΈΡΠ°ΡΠ° ΠΈΠ· JLS 4.8:
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² raw Π΄ΠΎΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΡΡΡΡΠΏΠΊΠ° ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π² ΠΊΠΎΠ΄Π΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΌ ΠΏΠΎΡΠ»Π΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΡ ΡΠΎΠ΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎΡΡΠΈ Π² ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java, Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ Π±ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java Π±ΡΠ΄ΡΡ Π·Π°ΠΏΡΠ΅ΡΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ².
Π ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΌ Java 2nd Edition ΡΠ°ΠΊΠΆΠ΅ Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
Π£ΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΡ ΡΠ·ΡΠΊΠ° Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ ? Π§ΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Java Π²ΠΎΡ-Π²ΠΎΡ Π²ΡΡΡΠΏΠΈΡ Π² ΡΠ²ΠΎΠ΅ Π²ΡΠΎΡΠΎΠ΅ Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ, ΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π»ΠΎ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Java-ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ. ΠΡΠ»ΠΎ ΡΠΎΡΡΠ΅Π½ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΌ, ΡΡΠΎ Π²Π΅ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΎΡΡΠ°Π΅ΡΡΡ Π·Π°ΠΊΠΎΠ½Π½ΡΠΌ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Π½ΠΎΠ²ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ. ΠΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π·Π°ΠΊΠΎΠ½Π½ΡΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΡΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠ΅ΠΉ, ΠΏΡΠΈΠ½ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΈΠΏΡ raw.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΠΠΠΠΠΠ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΡ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ.
ΠΠ΅Ρ Π»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ?
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Java-Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, Π΅ΡΡΡ Π΄Π²Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅:
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅
ΠΡΠ²Π΅Ρ 2
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΡΠΈΠΏΡ raw Π² Java ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΠ°ΡΡΠΎ ΡΠ»ΡΡΡ, ΡΡΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅?
Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ
Π ΡΡΠ°ΡΡΡ
Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΡ
ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΡ
Π½Π΅Π»ΡΠ·Ρ Π±ΡΠ»ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ Ρ
ΡΠ°Π½ΠΈΠ» Π² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡ, ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½Π½ΡΠ΅, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈ ΡΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΠ±ΡΡΠ²ΠΈΡ ΡΠΎΡ
ΡΠ°Π½Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ.
ΠΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Compareable:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ CompareAble Ρ compareTo(MyCompareAble) Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ. ΠΠΎΡΠ΅ΠΌΡ Π²Ρ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ:
Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ: ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΊΠ»Π°ΡΡΡ Java, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΡΡΡΠ΅ ΡΠΈΠΏΡ. ΠΠ°Π³ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ΄Π΅Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ:
ΠΠ°ΠΊΠΎΠ²Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΡΡΡΡΠΌ ΡΠΈΠΏΠ°ΠΌ: ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ generics
ΠΡΠ²Π΅Ρ 3
ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠΏΡΡΠ΅Π½, Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ Box :
ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠΈΠΏΡ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅:
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠΈΠΏ raw Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΎΠ±ΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌ ΡΠΎΠ΄ΠΎΠ²ΠΎΠΌ ΡΠΈΠΏΠ΅:
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² ΡΠΈΠΏΠΎΠ² ΠΎΠ±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠ±Ρ ΠΎΠ΄ΡΡ ΠΎΠ±ΡΠΈΠΉ ΡΠΈΠΏ, ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°Ρ ΡΠ»ΠΎΠ² Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ².
Π ΡΠ°Π·Π΄Π΅Π»Π΅ «Π’ΠΈΠΏ ΡΡΠΈΡΠ°Π½ΠΈΡ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ.
ΠΠ΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ
ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ ΡΠ°Π½Π΅Π΅, ΠΏΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ ΠΎΠ±ΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΡ ΠΎΠΆΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. Example.java ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π΅ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠ³ΠΎ API, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅:
ΠΡΠ²Π΅Ρ 4
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ°.
ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ generics, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Ρ, Π° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΎΡΠΌΡ.
ΠΡΠ²Π΅Ρ 5
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π±ΡΠ»ΠΈ ΡΠΎΠ·Π΄Π°Π½Ρ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Java, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ»Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
ΠΠΎΠ³Π΄Π° Π²Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΡΠΏΠΈΡΠΎΠΊ, Π΅ΠΌΡ Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΎΠ½ Π΅ΡΡΡ, ΠΈ ΠΊΠΎΠ³Π΄Π° Π²Ρ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π΅Π³ΠΎ Π½Π° ΡΠΎΡ ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΠ΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ generics, Π²Ρ ΡΠ΄Π°Π»ΡΠ΅ΡΠ΅ «Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ» ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ²Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ΄ΡΠΈ Π² ΡΠΏΠΈΡΠΊΠ΅:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠΎΡΠ°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΉ ΠΈΠ· Π²ΡΠ·ΠΎΠ²Π° get, ΡΠ±ΠΎΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π΄Π°Π½ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ MyObject. ΠΡΠΎΡ ΡΠ°ΠΊΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ Π΄Π²ΠΈΠΆΡΡΠΈΠΌ ΡΠ°ΠΊΡΠΎΡΠΎΠΌ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠΈΠΊΠΎΠ². ΠΠ½ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΎ ΡΡΠΎ-ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ²Π΅Ρ 6
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Ρ ΠΎΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Π²Ρ ΡΡΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π»ΠΈ:
ΠΡΠ²Π΅Ρ 7
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ Ρ ΡΠ°ΡΡΠΎ ΡΠ»ΡΡΡ, ΡΡΠΎ ΠΈΡ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅?
«ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ» ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π½ΠΎΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠΌ ΡΠΈΠΏΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡΠ½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ, ΡΡΠΎ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΠΎΠ½ΡΡΠ½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°Π½ΡΡΠ΅.
ΠΠ°ΠΊΠ°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΈ ΠΊΠ°ΠΊ ΡΡΠΎ Π»ΡΡΡΠ΅?
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Ρ ΠΎΡΠ΅Ρ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ List, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ «ΠΈΠΌΠ΅Π½Π°», ΡΠΎΠ΄Π΅ΡΠΆΠ°Π»Π° ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊΠΈ:
ΠΡΠ²Π΅Ρ 8
ΠΠ΄Π΅ΡΡ Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ»ΡΡΠ°Π΅Π², ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΎΡΠΈΡΡΠΈΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ
Π‘Π»ΡΡΠ°ΠΉ 1
ΠΡΠΎ ΡΡΡΠΎΠ³ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ String Π½Π΅ Raw Type, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅.
Π‘Π»ΡΡΠ°ΠΉ 2
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ArrayList arr ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ, Π½ΠΎ Π²Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡ new ArrayList(); ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΌ ΡΠΈΠΏΠΎΠΌ.
Π‘Π»ΡΡΠ°ΠΉ 3
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ArrayList arr ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π½ΠΎ Π²Π°Ρ Object new ArrayList (); ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΎΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ.
ΠΡΠ²Π΅Ρ 9
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠ°Π²ΠΈΡΡ double Π² ΡΠΎ, ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π±ΡΡΡ Set int s.
ΠΡΠΈ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΈΠ· Set Π²Ρ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ Π²ΡΠΉΠ΄Π΅Ρ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²Ρ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΠ΅, ΡΡΠΎ ΡΡΠΎ Π²ΡΠ΅ int s, Π²Ρ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΠ΅ Π΅Π³ΠΎ Π½Π° Integer ; ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΈΠ΄Π΅Ρ double 3.45.
ΠΡΠ²Π΅Ρ 10
ΠΠΎΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π±ΡΠ΄ΡΡ ΠΊΡΡΠ°ΡΡ Π²Π°Ρ:
ΠΠ°ΠΊ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² ΠΏΡΠΈΠ½ΡΡΠΎΠΌ ΠΎΡΠ²Π΅ΡΠ΅, Π²Ρ ΡΠ΅ΡΡΠ΅ΡΠ΅ Π²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄Π΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² Π΅Π³ΠΎ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ (ΠΊΠΎΡΠΎΡΠΎΠ΅ Π² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ Object ).
ΠΡΠ²Π΅Ρ 11
ΠΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ Π²Π°Ρ list ΡΠ²Π»ΡΠ΅ΡΡΡ list ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², Π½Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ . ΠΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Java Π½Π΅ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π²Π½ΡΡΡΠΈ ΡΠΏΠΈΡΠΊΠ°. ΠΠ°ΡΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ String).
Π ΠΎΠ±ΡΠ΅ΠΌ, ΡΡΠΎ Π»ΡΡΡΠ°Ρ ΠΈΠ΄Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΠΈ Π²Π°Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡ Π²Π°ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ°.
ΠΡΠ²Π΅Ρ 12
Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ ΠΏΠΎΠ»Ρ, Π²Ρ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠΈΠΏΠ° Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° T:
ΠΡΠ»ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΎΠΏΡΡΠ΅Π½, Π²Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ ΡΠΈΠΏ Box:
ΠΡΠ²Π΅Ρ 13
Π― Π½Π°ΡΠ΅Π» ΡΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΡΠ±ΠΎΡΠΎΡΠ½ΡΡ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΉ ΠΈ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌ Π·Π°Π³Π°Π΄ΠΊΠΎΠΉ.
============== Π― ΠΏΠ΅ΡΠ΅ΡΠ΅Π» ΠΎΡ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ² ΠΎΠ±ΡΠ°Π·Π΅Ρ ================
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅, Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ 4 ΡΠ°ΡΠ°, ΡΡΠΎΠ±Ρ ΠΎΠ΄ΡΡΠ°ΡΠΈΡΡ ΡΠΈΠ»ΠΎΡΠΎΡΠΈΡ.
ΠΡΠ²Π΅Ρ 14
Π‘ΡΡΡΠ΅ ΡΠΈΠΏΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Ρ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²ΡΡΠ°ΠΆΠ°ΡΡ ΡΠΎ, ΡΡΠΎ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΡΠ°Π·ΠΈΡΡ.
ΠΡΠ²Π΅Ρ 15
ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ²
ΠΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΠΈΠΏΠ°.
Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π° List ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ.
ΠΠΎΠ³Π΄Π° Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π±ΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² JDK 1.5, Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π±ΡΠ»ΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠΎ ΡΡΠ°ΡΡΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ Java. Π₯ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² Π²ΡΠ΅ Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ,
ΠΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ:
ΠΠ½ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½Ρ ΠΈ Π½Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΡΡΡ ΡΠ΅Π±Ρ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ. ΠΡΠΈΠΌΠ΅Ρ