Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ?
Anonymous Quiz
19%
ΠΠΎΡΡΠ΄ΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ
39%
ΠΠΎΡΡΠ΄ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ΄ΠΎΠΌ
11%
ΠΠΎΡΡΠ΄ΠΎΠΊ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ°ΡΠΎΡΠ°
30%
ΠΠΎΡΡΠ΄ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ JVM
π21π€¨15π€7π₯5β2
ΠΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠ΅ΠΉ?
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Ρ ΡΠΆΠ΅ ΡΠ΅ΠΌ ArrayList. Π ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Π Π·Π½Π°ΡΠΈΡ, Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π½ΡΠΎΠ² Π½Π° ΠΎΡΠΈΠ±ΠΊΡ.
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠΈΠ³ΡΡΡ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ β generic-ΡΠΈΠΏΡ, ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ²-ΠΎΠ±Π΅ΡΡΠΎΠΊ.
1. Autoboxing Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎ Π΄ΠΎΡΠΎΠ³Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ;
2. ΠΡΠΎΠΌΠ΅ Π΄Π°Π½Π½ΡΡ , Object Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΠ΄ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ;
3. Π―ΡΠ΅ΠΉΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π»Π΅ΠΆΠ°Ρ Π±Π»ΠΈΠ·ΠΊΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π½ΡΡ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π² ΠΊΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΎΠ½ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠΎΡΡΠΎΠΌΡ Π·Π°ΠΌΠ΅Π½Π° Π»ΠΈΡΡΠΎΠ² Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ ΠΌΠΈΠΊΡΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Ρ ΡΠΆΠ΅ ΡΠ΅ΠΌ ArrayList. Π ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π»Π΅ΠΆΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ°ΡΡΠΈΠ², ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ, Π²Π°ΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Π Π·Π½Π°ΡΠΈΡ, Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΡΠ°Π½ΡΠΎΠ² Π½Π° ΠΎΡΠΈΠ±ΠΊΡ.
ΠΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ Π΄Π»Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΡΠΈΠ³ΡΡΡ ΠΏΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ. ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ β generic-ΡΠΈΠΏΡ, ΠΈΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π½ΠΈΡ Π² ΡΠΎΡΠΌΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ²-ΠΎΠ±Π΅ΡΡΠΎΠΊ.
1. Autoboxing Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎ Π΄ΠΎΡΠΎΠ³Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ;
2. ΠΡΠΎΠΌΠ΅ Π΄Π°Π½Π½ΡΡ , Object Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΏΠΎΠ΄ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ;
3. Π―ΡΠ΅ΠΉΠΊΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° Π»Π΅ΠΆΠ°Ρ Π±Π»ΠΈΠ·ΠΊΠΎ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΡΡΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅Ρ ΡΠ°Π½ΡΡ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΡ Π² ΠΊΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²Π° Π²ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π½ΡΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΎΠ½ ΡΠ»ΠΎΠΆΠ½Π΅Π΅. ΠΠΎΡΡΠΎΠΌΡ Π·Π°ΠΌΠ΅Π½Π° Π»ΠΈΡΡΠΎΠ² Π½Π° ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΈΠ·Π»ΠΈΡΠ½Π΅ΠΉ ΠΌΠΈΠΊΡΠΎΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ.
π27
Π§ΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
4%
I'm a Daddy
67%
It's me!
11%
I'm a Grandpa
19%
ΠΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ
π€27π€―10π9π₯΄3π€¨1
ΠΠ°ΠΊ ΠΎΠ±ΠΎΠΉΡΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ?
for/while. ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±: ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ-ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡ 0 Π΄ΠΎ size(). ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π°, Ρ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ. ΠΠ»Π°ΡΠ° Π·Π° ΡΡΠΎ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
Iterator. ΠΠΠ-ΡΠΏΠΎΡΠΎΠ±: ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ iterator() ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Ρ Π½Π΅Π³ΠΎ next() ΠΏΠΎΠΊΠ° hasNext() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π’Π°ΠΊΠΎΠΉ Β«ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΈΡΒ» ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠ΄, Π½Π΅ ΠΎΡΠ΄Π°Π²Π°Ρ ΡΠ°ΠΌΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΡΡ Π΅ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
for Iterable. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅.
Π‘ΡΡΠΈΠΌΡ. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΡΡΠΈΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² Π½ΡΠΌ. ΠΡΠΎΠΌΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ forEach(), ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ΅ΠΉ ΠΌΠΎΡΡΡ Java Steam API β ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ° ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π²Π΅ΡΠΈΡΡΡΠΉ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Java 8. Π‘ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. Π£ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ forEach Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈ replaceAll Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°ΠΊ ΡΠΎ ΡΡΡΠΈΠΌΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ, Π½ΠΎ Π±Π΅Π· ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΈΠΌΠΎΠ². ΠΠ½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΠΈΠΊΠ»Ρ for.
for/while. ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±: ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ-ΠΈΠ½Π΄Π΅ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΎΡ 0 Π΄ΠΎ size(). ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠ±Ρ ΠΎΠ΄Π°, Ρ Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ. ΠΠ»Π°ΡΠ° Π·Π° ΡΡΠΎ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΈΠ±ΠΈΡΡΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
Iterator. ΠΠΠ-ΡΠΏΠΎΡΠΎΠ±: ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ iterator() ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΎΡ, ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Ρ Π½Π΅Π³ΠΎ next() ΠΏΠΎΠΊΠ° hasNext() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true. Π ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, ΡΠ°ΠΊΠ°Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ. Π’Π°ΠΊΠΎΠΉ Β«ΠΎΠ±ΡΠ΅ΠΊΡ-ΠΈΡΠ΅ΡΠ°ΡΠΈΡΒ» ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΊΠΎΠ΄, Π½Π΅ ΠΎΡΠ΄Π°Π²Π°Ρ ΡΠ°ΠΌΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΡΡ Π΅ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
for Iterable. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Ρ Π°Ρ Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΊΠΎΠ³Π΄Π° Π½ΡΠΆΠ΅Π½ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±Ρ ΠΎΠ΄. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠ²Π½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π΅ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅.
Π‘ΡΡΠΈΠΌΡ. Π‘ΠΎΠ·Π΄Π°ΡΡ ΠΎΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΡΡΡΠΈΠΌ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² Π½ΡΠΌ. ΠΡΠΎΠΌΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ forEach(), ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΡΠ΅ΠΉ ΠΌΠΎΡΡΡ Java Steam API β ΡΠΈΠ»ΡΡΡΠΎΠ²Π°ΡΡ, ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. ΠΠ° ΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π»ΠΈΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π·Π²Π΅ΡΠΈΡΡΡΠΉ.
Π€ΡΠ½ΠΊΡΠΈΠΈ Java 8. Π‘ ΡΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. Π£ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΈ Ρ ΡΡ-ΡΠ°Π±Π»ΠΈΡ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ forEach Π΄Π»Ρ ΠΎΠ±Ρ ΠΎΠ΄Π° ΠΈ replaceAll Π΄Π»Ρ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ°ΠΊ ΡΠΎ ΡΡΡΠΈΠΌΠ°ΠΌΠΈ, ΠΎΠ½ΠΈ Π΄Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΡΠΈΠ»Ρ, Π½ΠΎ Π±Π΅Π· ΠΈΠ·Π±ΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΠΈΠΌΠΎΠ². ΠΠ½ΡΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΎΡΡΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ ΡΠΈΠΊΠ»Ρ for.
π24π₯6
ΠΠ°ΠΊΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ List Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ Π²ΡΡΠ°Π²ΠΊΠ° ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΠ΅)?
Anonymous Quiz
35%
ArrayList
6%
ΠΡΠ±ΠΎΠΉ, ΠΈΡ
ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ
Π²ΡΡΠ°Π²ΠΊΠΈ-ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°
58%
LinkedList
1%
Vector
π19π₯΄16π₯±3π3
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ fail-fast ΠΈ fail-safe ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ?
ΠΡΠΎ Π½Π΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Iterator. ΠΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Fail-fast β Β«Π±ΡΡΡΡΡΠΉΒ» ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΊΠ°ΠΊ-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ, ΠΎΠ½ ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΡΡΠ². Π’Π°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° ArrayList, ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ½ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ConcurrentModificationException. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π΅ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° fail-fast ΠΎΡΠΊΠ°Π·Π°Ρ , ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Fail-safe β Β«ΡΠΌΠ½ΡΠΉΒ» ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΠ»Π°ΡΠ° Π·Π° ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ Π½Π΅ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ (Β«ΡΠ»Π°Π±Π°Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡΒ»). ΠΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° ConcurrentHashMap ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ , ΠΎΠ½ Π½Π΅ Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ°ΡΡΡ ΡΠ²Π΅ΠΆΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ»Π°ΡΠ° Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π΄ΡΡΠ³ΠΈΡ fail-safe ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, Π΄Π΅ΡΠ°Π»ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ.
ΠΡΠΎ Π½Π΅ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, Π° Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Iterator. ΠΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΠ²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Fail-fast β Β«Π±ΡΡΡΡΡΠΉΒ» ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΊΠ°ΠΊ-Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ, ΠΎΠ½ ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΡΠ°Π·Π±ΠΈΡΠ°ΡΠ΅Π»ΡΡΡΠ². Π’Π°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° ArrayList, ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΠ½ Π²ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ ConcurrentModificationException. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π΅ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° fail-fast ΠΎΡΠΊΠ°Π·Π°Ρ , ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ°ΠΊ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Fail-safe β Β«ΡΠΌΠ½ΡΠΉΒ» ΠΈΡΠ΅ΡΠ°ΡΠΎΡ. ΠΠ±ΡΡΠ½ΠΎ ΠΏΠ»Π°ΡΠ° Π·Π° ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ Π½Π΅ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ (Β«ΡΠ»Π°Π±Π°Ρ ΠΊΠΎΠ½ΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΡΒ»). ΠΡΠ΅ΡΠ°ΡΠΎΡ ΠΊΠ»Π°ΡΡΠ° ConcurrentHashMap ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π΄Π°Π½Π½ΡΡ , ΠΎΠ½ Π½Π΅ Π²ΡΠ±ΡΠΎΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠ°ΡΡΡ ΡΠ²Π΅ΠΆΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ»Π°ΡΠ° Π·Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π΄ΡΡΠ³ΠΈΡ fail-safe ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ, Π΄Π΅ΡΠ°Π»ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ.
π30
Π§Π΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ interface ΠΎΡ @β interface?
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±Π°Ρ Π³ΡΡΠΏΠΏΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° β Serializable. Π’Π°ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ»Π°ΡΡΡ Π½Π΅ΠΊΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ (ΠΈ instanceof), Π»ΠΈΠ±ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ, Π° ΠΊΠ°ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. ΠΠ°ΡΠΊΠ΅ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 1.5 Π² ΡΠ·ΡΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π½ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄ ΡΠΈΠΏΠΎΠ² β Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΠ½ΠΈ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:
1. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, Π½ΠΎ ΠΏΠΎΡΡΠΈ ΠΊ ΡΠ΅ΠΌΡ ΡΠ³ΠΎΠ΄Π½ΠΎ: ΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌ, ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ElementType;
2. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ²ΠΎΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
3. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ΅, Π½Π΅ ΠΏΠΎΠΏΠ°Π² Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ Π²ΠΎΠ²ΡΠ΅. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π΅Π΅ RetentionPolicy;
4. ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠΉ, ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π΅Π΅ @Inherited;
5. Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½Π½Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Π·Π³Π»ΡΠ΄Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π½Π°ΡΡΠΎΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
Joshua Block Π² Π³Π»Π°Π²Π΅ 37 Effective Java Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π° ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
1. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΡΠΎ Π΅ΡΠ΅ ΠΈ ΡΠΈΠΏ;
2. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ·ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΠ° ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ, ΡΠ΄Π΅Π»Π°Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ @interface ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, interface β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² .class-ΡΠ°ΠΉΠ»Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ java.lang.annotation.Annotation, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΡΠ»Π°Π³ΠΎΠΌ ACC_ANNOTATION. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΡΠΈΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² JVMS 4.7.16-4.7.22.
Π ΡΠ»ΠΎΠ²Ρ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΈΠ΄Π° @something Π² javadoc Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ³Π°ΠΌΠΈ. ΠΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½ΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Ρ Π½ΠΈΠΌΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ.
Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΎΡΠΎΠ±Π°Ρ Π³ΡΡΠΏΠΏΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° β Serializable. Π’Π°ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΊΠ»Π°ΡΡΡ Π½Π΅ΠΊΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠΈΠΈ (ΠΈ instanceof), Π»ΠΈΠ±ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ, Π° ΠΊΠ°ΠΊ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ. ΠΠ°ΡΠΊΠ΅ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 1.5 Π² ΡΠ·ΡΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π½ΠΎΠ²ΡΠΉ Π²ΠΈΠ΄ ΡΠΈΠΏΠΎΠ² β Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΠ½ΠΈ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΠΈ ΡΠ°ΡΡΠΈΡΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°:
1. ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΠΊΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, Π½ΠΎ ΠΏΠΎΡΡΠΈ ΠΊ ΡΠ΅ΠΌΡ ΡΠ³ΠΎΠ΄Π½ΠΎ: ΠΊ ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌ, ΠΊ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌ, ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ. ΠΠΎΠ»Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠΈ ElementType;
2. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ²ΠΎΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Ρ
3. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΡΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ΅, Π½Π΅ ΠΏΠΎΠΏΠ°Π² Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ Π²ΠΎΠ²ΡΠ΅. ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π΅Π΅ RetentionPolicy;
4. ΠΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠΉ, ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π΅Π΅ @Inherited;
5. Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ. ΠΡΠΈΠΌΠ΅Π½Π΅Π½Π½Π°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²Π·Π³Π»ΡΠ΄Π° ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π½Π°ΡΡΠΎΡΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
Joshua Block Π² Π³Π»Π°Π²Π΅ 37 Effective Java Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ Π΄Π²Π° ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΏΠ΅ΡΠ΅Π΄ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ:
1. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ°ΡΠΊΠ΅ΡΠ½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ β ΡΡΠΎ Π΅ΡΠ΅ ΠΈ ΡΠΈΠΏ;
2. ΠΠΎΠΆΠ½ΠΎ ΡΡΠ·ΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΡΡΡ ΠΌΠ°ΡΠΊΠ΅ΡΠ° ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ, ΡΠ΄Π΅Π»Π°Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ.
ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ Π²ΠΎΠΏΡΠΎΡΡ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ @interface ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, interface β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π² .class-ΡΠ°ΠΉΠ»Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ java.lang.annotation.Annotation, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ ΡΠ»Π°Π³ΠΎΠΌ ACC_ANNOTATION. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ. ΠΡΠΈΠΌ ΠΎΠ±ΡΡΡΠ½ΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π°ΡΡΠΈΠ±ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½Ρ Π² JVMS 4.7.16-4.7.22.
Π ΡΠ»ΠΎΠ²Ρ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π²ΠΈΠ΄Π° @something Π² javadoc Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ³Π°ΠΌΠΈ. ΠΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π½ΠΎ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Ρ Π½ΠΈΠΌΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅Π³ΠΎ.
π25
Π§ΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
20%
000111222
18%
012012012
2%
010120212
60%
ΠΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅
π22π4
ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ?
Π£Π΄ΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ»ΡΡΠ°ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° RetentionPolicy:
SOURCE β Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π½ΠΎ Π½Π΅ Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½Π° Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΈΡ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
ΠΠ΅ΡΠ²Π°Ρ β Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, Π° Π½Π΅ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ. ΠΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π°Π½Π½ΠΎΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅ΡΡ β @Immutable ΠΈ @ThreadSafe ΠΈΠ· Hibernate.
ΠΡΠΎΡΠ°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ β ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΈΠΌΠ΅ΡΡ ΡΡΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, @SuppressWarnings ΠΈ @Override ΠΌΠΎΠ³ΡΡ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. IntelliJ IDEA ΡΠΌΠ΅Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ @Nullable ΠΈ @NonNull ΠΈΠ· Spring Framework, ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ NullPointerException.
CLASS β ΡΠ°ΠΌΠΎΠ΅ ΡΠΊΠ·ΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠ΅, Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ .class-ΡΠ°ΠΉΠ»Π°, Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ ΡΠ΅ΡΠ»Π΅ΠΊΡΠ½Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ Π±Π°ΠΉΡΠΊΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠΎΠ².
RUNTIME β ΡΠ°ΠΌΠΎΠ΅ Ρ ΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π¦Π΅Π»Ρ ΡΠ½Π°Π±ΠΆΠ°Π΅ΡΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘Π°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π²ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ runtime-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠΈΡΠ°Π΅Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Reflection API. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ²: Spring, Hibernate, Jackson.
Π£Π΄ΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ»ΡΡΠ°ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° RetentionPolicy:
SOURCE β Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, Π½ΠΎ Π½Π΅ Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½Π° Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΈΡ Π½Π° Π΄Π²Π΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ:
ΠΠ΅ΡΠ²Π°Ρ β Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, Π° Π½Π΅ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΌΠ°ΡΠΊΠ΅ΡΡ. ΠΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π°Π½Π½ΠΎΡΠΈΡΡΠ΅ΠΌΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅ΡΡ β @Immutable ΠΈ @ThreadSafe ΠΈΠ· Hibernate.
ΠΡΠΎΡΠ°Ρ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ β ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΈΠΌΠ΅ΡΡ ΡΡΠΎΠΉ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ, @SuppressWarnings ΠΈ @Override ΠΌΠΎΠ³ΡΡ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. IntelliJ IDEA ΡΠΌΠ΅Π΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ @Nullable ΠΈ @NonNull ΠΈΠ· Spring Framework, ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ NullPointerException.
CLASS β ΡΠ°ΠΌΠΎΠ΅ ΡΠΊΠ·ΠΎΡΠΈΡΠ΅ΡΠΊΠΎΠ΅, Π½ΠΎ ΠΏΡΠΈ ΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄ .class-ΡΠ°ΠΉΠ»Π°, Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΠ΅ΡΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠΎΠ². Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°ΠΊΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Π° Π΄Π»Ρ ΡΠ΅ΡΠ»Π΅ΠΊΡΠ½Π°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ Π±Π°ΠΉΡΠΊΠΎΠ΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΎΡΠΎΠ².
RUNTIME β ΡΠ°ΠΌΠΎΠ΅ Ρ ΠΎΠ΄ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π¦Π΅Π»Ρ ΡΠ½Π°Π±ΠΆΠ°Π΅ΡΡΡ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘Π°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ Π²ΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ. ΠΠ»Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ»ΡΠ·Ρ runtime-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠΈΡΠ°Π΅Ρ ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Reflection API. Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ²: Spring, Hibernate, Jackson.
π22π1
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ?
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π²ΠΈΠ΄Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°-ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΡ, ΠΎΡΠ²Π΅Ρ β ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Ρ. ΠΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, Π΅ΡΠ»ΠΈ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Inherited. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½ΡΠΆΠ½ΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΡΡΠ³ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΌΡΡΠ» Π²ΠΎΠΏΡΠΎΡΠ° β Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΈΡ ΡΠΈΠΏΠΎΠ²-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΠΎΠ½Π° ΡΠΎΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² .class-ΡΠ°ΠΉΠ». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠΈΠΏΠΎΠΌ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, java.lang.Override.
ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ (@interface) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΠΊΡΠΈΠΉ extends ΠΈΠ»ΠΈ implements. ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ². Π ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²ΡΠ΅ ΡΠΈΠΏΡ-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡ Annotation.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π²ΠΈΠ΄Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°-ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΡ, ΠΎΡΠ²Π΅Ρ β ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Ρ. ΠΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, Π΅ΡΠ»ΠΈ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Inherited. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½ΡΠΆΠ½ΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΡΡΠ³ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΌΡΡΠ» Π²ΠΎΠΏΡΠΎΡΠ° β Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΈΡ ΡΠΈΠΏΠΎΠ²-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΠΎΠ½Π° ΡΠΎΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² .class-ΡΠ°ΠΉΠ». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠΈΠΏΠΎΠΌ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, java.lang.Override.
ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ (@interface) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΠΊΡΠΈΠΉ extends ΠΈΠ»ΠΈ implements. ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ². Π ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²ΡΠ΅ ΡΠΈΠΏΡ-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡ Annotation.
π22
ΠΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°?
Anonymous Quiz
41%
A is equal to Infinity
24%
A is equal to NaN
19%
ΠΡΠΈΠ±ΠΊΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ
17%
ΠΡΠΈΠ±ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
π21π₯΄2β‘1π₯1π€1
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ?
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ Java 8 Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π² Π½Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΠΏΠ΅ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π² ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΡΠΌ. Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 8 Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repeatable.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅: ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π΅ΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ @Repeatable Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎ.
Π‘ΠΎ ΡΡΠΎΡΠΎΠ½Ρ Reflection ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΡΠ²Π½ΠΎ β ΠΌΠ΅ΡΠΎΠ΄ getAnnotationsByType ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΠΉΠ΄Π΅Ρ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ Java 8 Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π² Π½Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΠΏΠ΅ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π² ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΡΠΌ. Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 8 Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repeatable.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅: ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π΅ΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ @Repeatable Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎ.
Π‘ΠΎ ΡΡΠΎΡΠΎΠ½Ρ Reflection ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΡΠ²Π½ΠΎ β ΠΌΠ΅ΡΠΎΠ΄ getAnnotationsByType ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΠΉΠ΄Π΅Ρ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
π11π₯1
ΠΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΠΏΠΎΡΠ»Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
7%
a test A
24%
a test B
6%
b test A
45%
b test B
5%
b test A test B
3%
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
10%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
π27
ΠΠ°ΠΊΠΈΠ΅ Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π±ΡΠ²Π°ΡΡ ΡΠ°ΡΠ³Π΅ΡΡ?
ΠΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Target ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ. ΠΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ElementType. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ @Target Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΊΡΠΎΠΌΠ΅ TYPE_PARAMETER. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ°ΡΠ³Π΅ΡΡ:
β’ TYPE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ enum-Π°.
β’ FIELD β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ enum-ΠΎΠ²).
β’ METHOD β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°.
β’ PARAMETER β Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°.
β’ CONSTRUCTOR β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
β’ LOCAL_VARIABLE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
β’ ANNOTATION_TYPE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
β’ PACKAGE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° (Π² package-info.java).
ββ Π‘ Java 8 ββ
β’ TYPE_PARAMETER β ΠΠ±ΡΠ²Π»Π΅Π½ΠΈΠ΅ generic ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
β’ TYPE_USE β ΠΡΠ±ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: (@NonNull String) myObject.
ββ Π‘ Java 9 ββ
β’ MODULE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ.
ΠΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Target ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΠ±ΡΡΠ²Π»ΡΠ΅ΠΌΠ°Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ. ΠΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ElementType. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ @Target Π½Π΅ ΡΠΊΠ°Π·Π°Π½, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ ΠΊΡΠΎΠΌΠ΅ TYPE_PARAMETER. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΡΠ°ΡΠ³Π΅ΡΡ:
β’ TYPE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠ°, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ enum-Π°.
β’ FIELD β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ (Π²ΠΊΠ»ΡΡΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ enum-ΠΎΠ²).
β’ METHOD β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°.
β’ PARAMETER β Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°.
β’ CONSTRUCTOR β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ°.
β’ LOCAL_VARIABLE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ.
β’ ANNOTATION_TYPE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
β’ PACKAGE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° (Π² package-info.java).
ββ Π‘ Java 8 ββ
β’ TYPE_PARAMETER β ΠΠ±ΡΠ²Π»Π΅Π½ΠΈΠ΅ generic ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
β’ TYPE_USE β ΠΡΠ±ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: (@NonNull String) myObject.
ββ Π‘ Java 9 ββ
β’ MODULE β ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄ΡΠ»Ρ.
π₯10π2
ΠΠ°ΠΊΠΎΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π°?
Anonymous Quiz
14%
1
62%
2
5%
ΠΡΠΈΠ±ΠΊΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
20%
ΠΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
π8