ΠΠ»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ?
Π£Π΄ΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ»ΡΡΠ°ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° 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.
π13π₯3β€2π2
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ?
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π²ΠΈΠ΄Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°-ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΡ, ΠΎΡΠ²Π΅Ρ β ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Ρ. ΠΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, Π΅ΡΠ»ΠΈ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Inherited. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½ΡΠΆΠ½ΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΡΡΠ³ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΌΡΡΠ» Π²ΠΎΠΏΡΠΎΡΠ° β Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΈΡ ΡΠΈΠΏΠΎΠ²-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΠΎΠ½Π° ΡΠΎΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² .class-ΡΠ°ΠΉΠ». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠΈΠΏΠΎΠΌ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, java.lang.Override.
ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ (@interface) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΠΊΡΠΈΠΉ extends ΠΈΠ»ΠΈ implements. ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ². Π ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²ΡΠ΅ ΡΠΈΠΏΡ-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡ Annotation.
ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡΡ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ. ΠΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ Π² Π²ΠΈΠ΄Ρ, ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π»ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ°-ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΊΠ»Π°ΡΡΡ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΡ, ΠΎΡΠ²Π΅Ρ β ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Ρ. ΠΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ, Π΅ΡΠ»ΠΈ Π½Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Inherited. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π½ΡΠΆΠ½ΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ.
ΠΡΡΠ³ΠΎΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΌΡΡΠ» Π²ΠΎΠΏΡΠΎΡΠ° β Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΈΡ ΡΠΈΠΏΠΎΠ²-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ, ΠΊΠ°ΠΊ ΠΊΠ»Π°ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, ΠΎΠ½Π° ΡΠΎΠΆΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² .class-ΡΠ°ΠΉΠ». ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Ρ ΡΠΈΠΏΠΎΠΌ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, java.lang.Override.
ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΡΡΠ»ΠΎΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ², ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ (@interface) Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠ΅ΠΊΡΠΈΠΉ extends ΠΈΠ»ΠΈ implements. ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΡΠΎΠ±Ρ Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ². Π ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²ΡΠ΅ ΡΠΈΠΏΡ-Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ β ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΎΡ Annotation.
π13β€5π₯4π1
β¨οΈ ΠΠΎΡΠΎΠ²ΠΈΠΌΡΡ ΠΊ ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π½Π° Java ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Junior+/ Middle: ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ ΡΠ²ΠΎΠΈ Π·Π½Π°Π½ΠΈΡ
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ Java Middle Developer.
Π£ΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ, ΠΊΡΠΎ ΠΆΠ΅Π»Π°Π΅Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Java.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡ Π²Π΅Π±ΠΈΠ½Π°ΡΠ°:
- ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π΄Π»Ρ ΡΡΠΎΠ²Π½Ρ Java Middle Developer;
- Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Ρ ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΠΌΠ½ΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ.
ΠΠΎΡΠ»Π΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΊΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Β«Java Developer. ProfessionalΒ» ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅.
Π‘ΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ 20 ΡΠ΅Π²ΡΠ°Π»Ρ Π² 20:00 ΠΠ‘Π
Π£ΡΠ°ΡΡΠΈΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅
β‘οΈ ΠΠ°ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ!
ΠΠ° Π΄Π°Π½Π½ΠΎΠΌ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΠΈ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π° ΡΠΎΠ±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° ΠΏΠΎΠ·ΠΈΡΠΈΡ Java Middle Developer.
Π£ΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ, ΠΊΡΠΎ ΠΆΠ΅Π»Π°Π΅Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Java.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠ΅Π½ΠΈΡ Π²Π΅Π±ΠΈΠ½Π°ΡΠ°:
- ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²Π΅ΡΠ΅Π½Π½ΠΎ ΠΎΡΠ²Π΅ΡΠΈΡΡ Π½Π° Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ²ΡΡ Π΄Π»Ρ ΡΡΠΎΠ²Π½Ρ Java Middle Developer;
- Π±ΡΠ΄Π΅ΡΠ΅ ΠΎΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½Ρ ΠΎ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΡ ΠΊΠ°ΠΌΠ½ΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΡΠ²Π΅ΡΠ°ΠΌΠΈ Π½Π° ΡΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ.
ΠΠΎΡΠ»Π΅ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΠΈΡΠ°ΡΡΡΡ Π½Π° ΠΊΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Β«Java Developer. ProfessionalΒ» ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅.
Π‘ΠΎΠ±ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄Π΅Ρ 20 ΡΠ΅Π²ΡΠ°Π»Ρ Π² 20:00 ΠΠ‘Π
Π£ΡΠ°ΡΡΠΈΠ΅ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
β€6π2π₯2π1
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ
Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ?
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ Java 8 Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π² Π½Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΠΏΠ΅ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π² ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΡΠΌ. Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 8 Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repeatable.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅: ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π΅ΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ @Repeatable Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎ.
Π‘ΠΎ ΡΡΠΎΡΠΎΠ½Ρ Reflection ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΡΠ²Π½ΠΎ β ΠΌΠ΅ΡΠΎΠ΄ getAnnotationsByType ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΠΉΠ΄Π΅Ρ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ Java 8 Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π² Π½Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΠΏΡΠΎΠΏΠ΅ΡΡΠΈ ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ. ΠΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π² ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (ΡΠΌ. Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ΅).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 8 Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΌΠ΅ΡΠ°-Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ @Repeatable.
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π΅Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠ°Π½ΡΡΠ΅: ΠΏΠΎΠΌΠ΅ΡΠ°Ρ Π΅ΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ @Repeatable Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ. ΠΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ: ΡΠ΅ΠΏΠ΅ΡΡ Π½Π°Π±ΠΎΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΎΠ±ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π΅ΡΠ²Π½ΠΎ.
Π‘ΠΎ ΡΡΠΎΡΠΎΠ½Ρ Reflection ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠ°-ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π΅ ΠΎΠΏΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠΌ ΡΠ²Π½ΠΎ β ΠΌΠ΅ΡΠΎΠ΄ getAnnotationsByType ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΠΉΠ΄Π΅Ρ ΠΈ ΡΠ°Π·Π²Π΅ΡΠ½Π΅Ρ ΡΡΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ.
β€9π6π₯2
ΠΠ°ΡΠ°Π» ΠΈΠ·ΡΡΠ°ΡΡ Java?βοΈ
ΠΡΠΈΡ ΠΎΠ΄ΠΈ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΡΠΎΠΊ Β«ΠΡΠ½ΠΎΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² JavaΒ» ΠΎΡ OTUS.
ΠΠ° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Ρ ΠΠΠ, Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ·ΡΠΊΠ° Java, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ.
Π£ΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠ΅ΠΌ, ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ:
β ΠΠ°ΡΠ°ΡΡ ΠΈΠ·ΡΡΠ°ΡΡ Java Ρ Π½ΡΠ»Ρ.
β ΠΠ΅ Π·Π½Π°Π΅Ρ Ρ ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΊ ΡΠ΅ΠΌΠ΅ ΠΠΠ (Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ·ΡΠΊΠ΅ Java).
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 22 ΡΠ΅Π²ΡΠ°Π»Ρ Π² 20:00 ΠΌΡΠΊ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΡΠΎΡΠ΅Π½ΠΎ ΠΊ ΡΡΠ°ΡΡΡ ΠΊΡΡΡΠ° Β«Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ». ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΡΡΠ½ΠΊΠ°.
β‘οΈ ΠΠ»Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΈΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠΉΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ: ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ
ΠΡΠΈΡ ΠΎΠ΄ΠΈ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΡΠΎΠΊ Β«ΠΡΠ½ΠΎΠ²Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² JavaΒ» ΠΎΡ OTUS.
ΠΠ° Π²Π΅Π±ΠΈΠ½Π°ΡΠ΅ ΠΎΠ±ΡΡΠ΄ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Ρ ΠΠΠ, Π»Π΅ΠΆΠ°ΡΠ΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ·ΡΠΊΠ° Java, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ.
Π£ΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠ΅ΠΌ, ΠΊΡΠΎ Ρ ΠΎΡΠ΅Ρ:
β ΠΠ°ΡΠ°ΡΡ ΠΈΠ·ΡΡΠ°ΡΡ Java Ρ Π½ΡΠ»Ρ.
β ΠΠ΅ Π·Π½Π°Π΅Ρ Ρ ΠΊΠ°ΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎΠ΄ΠΎΠΉΡΠΈ ΠΊ ΡΠ΅ΠΌΠ΅ ΠΠΠ (Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ·ΡΠΊΠ΅ Java).
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 22 ΡΠ΅Π²ΡΠ°Π»Ρ Π² 20:00 ΠΌΡΠΊ ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΡΡΠΎΡΠ΅Π½ΠΎ ΠΊ ΡΡΠ°ΡΡΡ ΠΊΡΡΡΠ° Β«Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΒ». ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π° ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ ΡΡΠ½ΠΊΠ°.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
π6π₯3
Π§ΡΠΎ Π²ΡΠ²Π΅Π΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄?
Anonymous Quiz
32%
ΠΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ
20%
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ NullPointerException
39%
null
9%
1
π€8π7π₯3β€2π―1
π ΠΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΎΠΊΠ°Π·Π°Π»ΡΡ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ Π²Ρ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ. ΠΡΡ ΡΠ°Π²Π½ΠΎ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΡΠ΅ Ρ Π½ΠΈΠΌ ΡΠΏΡΠ°Π²ΠΈΡΡΡΡ, ΡΠΏΡΠΎΡΠΈΡΠ΅ ΡΠΎΠ²Π΅ΡΠ° Ρ ChatGPT ΠΈΠ»ΠΈ ΠΎΡΠ΄Π°Π΄ΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΡΠ½ΠΎΠΌΡ ΠΊΠΎΠ»Π»Π΅Π³Π΅?
ΠΠ°ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΎΡ ΠΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠΏΠ»Π΅ΠΉΡΠ° hh.ru Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π² ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ. ΠΡΠ²Π΅ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π° ΠΏΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΈ ΡΠ·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ Π²Π°ΠΌ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈ ΡΡΡΠΎΠΈΡΡ ΠΊΠ°ΡΡΠ΅ΡΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ Π½Π΅ΡΠ²ΠΎΠ².
Π ΠΊΠΎΠ½ΡΠ΅ ΡΠ΅ΡΡΠ° Π²Π°Ρ ΠΆΠ΄ΡΡ ΡΠΊΠΈΠ΄ΠΊΠ° 14% Π½Π° ΠΊΠ°ΡΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ Ρ 12 ΠΏΠΎ 19 ΡΠ΅Π²ΡΠ°Π»Ρ. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°Π±ΡΠ°ΡΡ.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«Π₯ΡΠ΄Ρ Π°Π½ΡΠ΅ΡΒ», 129085, Π³. ΠΠΎΡΠΊΠ²Π°, ΡΠ». ΠΠΎΠ΄ΠΎΠ²ΠΈΠΊΠΎΠ²Π°, Π΄.9, ΡΡΡ.10, ΠΠΠ Π 1067761906805. erid: 2VtzqwZ7CLR
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π°ΠΊΡΠΈΠΈ.
ΠΠ°ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΎΡ ΠΠ°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠΊΠ΅ΡΠΏΠ»Π΅ΠΉΡΠ° hh.ru Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π² ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ Ρ ΡΠ°Π±ΠΎΡΠΎΠΉ. ΠΡΠ²Π΅ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π½Π° ΠΏΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΠΈ ΡΠ·Π½Π°ΠΉΡΠ΅, ΠΊΠ°ΠΊ Π²Π°ΠΌ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈ ΡΡΡΠΎΠΈΡΡ ΠΊΠ°ΡΡΠ΅ΡΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ Π½Π΅ΡΠ²ΠΎΠ².
Π ΠΊΠΎΠ½ΡΠ΅ ΡΠ΅ΡΡΠ° Π²Π°Ρ ΠΆΠ΄ΡΡ ΡΠΊΠΈΠ΄ΠΊΠ° 14% Π½Π° ΠΊΠ°ΡΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ»ΡΡΠ°ΡΠΈΡ Ρ 12 ΠΏΠΎ 19 ΡΠ΅Π²ΡΠ°Π»Ρ. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ Π·Π°Π±ΡΠ°ΡΡ.
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«Π₯ΡΠ΄Ρ Π°Π½ΡΠ΅ΡΒ», 129085, Π³. ΠΠΎΡΠΊΠ²Π°, ΡΠ». ΠΠΎΠ΄ΠΎΠ²ΠΈΠΊΠΎΠ²Π°, Π΄.9, ΡΡΡ.10, ΠΠΠ Π 1067761906805. erid: 2VtzqwZ7CLR
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π°ΠΊΡΠΈΠΈ.
π4π₯2
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ @β Deprecated?
ΠΡΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ°ΡΠ΅Π» ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½. ΠΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ @Deprecated ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π±ΡΠ΄ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ warning-ΠΎΠΌ.
ΠΠΌΠ΅Π΅Ρ retention RUNTIME, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Reflection API.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 9 Ρ ΡΡΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β ΡΡΡΠΎΠΊΠ° since ΠΈ Π±ΡΠ»Π΅Π²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ forRemoval. Π since ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ true Π² forRemoval ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΌΠ°ΠΆΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½. Π’Π°ΠΊΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΡ β Ρ Java 9 ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°ΠΌΠΎΠΉ JDK ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π°Π»ΡΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ .
ΠΠ±ΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ, ΠΏΡΠΈΡΠΈΠ½Ρ ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΡ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² Π΅Π³ΠΎ Javadoc-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΡΠ΅Π³ΠΎΠΌ @deprecated.
ΠΡΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ°ΡΠ΅Π» ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½. ΠΠ»Π°ΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ @Deprecated ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π±ΡΠ΄ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ Ρ warning-ΠΎΠΌ.
ΠΠΌΠ΅Π΅Ρ retention RUNTIME, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Reflection API.
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 9 Ρ ΡΡΠΎΠΉ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ β ΡΡΡΠΎΠΊΠ° since ΠΈ Π±ΡΠ»Π΅Π²ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ forRemoval. Π since ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ true Π² forRemoval ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΌΠ°ΠΆΠΎΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½. Π’Π°ΠΊΠΎΠ΅ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΡ β Ρ Java 9 ΠΈ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠ°ΠΌΠΎΠΉ JDK ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΄Π°Π»ΡΡΡΡΡ Π² Π±ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ .
ΠΠ±ΡΡΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠΌ, ΠΏΡΠΈΡΠΈΠ½Ρ ΡΡΡΠ°ΡΠ΅Π²Π°Π½ΠΈΡ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² Π΅Π³ΠΎ Javadoc-Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ΄ ΡΠ΅Π³ΠΎΠΌ @deprecated.
π15π₯4β€1
This media is not supported in your browser
VIEW IN TELEGRAM
ΠΡΠΈΠ³Π»Π°ΡΠ°Π΅ΠΌ Π½Π° Infra Meetup #3 β ΠΌΠΈΡΠ°ΠΏ ΠΏΡΠΎ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΠΎΡ Π―Π½Π΄Π΅ΠΊΡ Π’Π°ΠΊΡΠΈ ΠΈ Π’Π΅Ρ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΠΊΠΎΠΌΠ° ΠΈ Π Π°ΠΉΠ΄ΡΠ΅Ρ
Π°
ΠΠ° ΠΌΠΈΡΠ°ΠΏΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΡΡ ΡΡΠ΅ΠΌΡ Π΄ΠΎΠΊΠ»Π°Π΄Π°ΠΌΠΈ ΠΎΠ± ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ Π² Π’Π°ΠΊΡΠΈ, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π±ΠΈΠ»Π»ΠΈΠ½Π³Π° ΠΠΊΠΎΠΌΠ° ΠΈ Π Π°ΠΉΠ΄ΡΠ΅Ρ Π° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° userver Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΌΠΈΡΠ°ΠΏΠ° ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΆΠ΄Π΅Ρ Π½Π΅ΡΠ²ΠΎΡΠΊΠΈΠ½Π³ ΠΈ ΡΠΊΡΠΊΡΡΡΠΈΡ ΠΏΠΎ ΠΏΠΈΡΠ΅ΡΡΠΊΠΎΠΌΡ ΠΎΡΠΈΡΡ.
Π€ΠΎΡΠΌΠ°Ρ: ΠΎΡΠ»Π°ΠΉΠ½ ΠΈΠ»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½
ΠΠ΅ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠΈ: Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, ΠΠ¦ Β«ΠΠ΅Π½ΡΠ°Β»
ΠΠ°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ: 29 ΡΠ΅Π²ΡΠ°Π»Ρ, 18:00
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ»Π°ΠΉΠ½ ΠΌΠ΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "Π―Π½Π΄Π΅ΠΊΡ.Π’Π°ΠΊΡΠΈ", ΠΠΠ: 7704340310
ΠΠ° ΠΌΠΈΡΠ°ΠΏΠ΅ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΡΡ ΡΡΠ΅ΠΌΡ Π΄ΠΎΠΊΠ»Π°Π΄Π°ΠΌΠΈ ΠΎΠ± ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ Π² Π’Π°ΠΊΡΠΈ, ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Π±ΠΈΠ»Π»ΠΈΠ½Π³Π° ΠΠΊΠΎΠΌΠ° ΠΈ Π Π°ΠΉΠ΄ΡΠ΅Ρ Π° ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° userver Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΌΠΈΡΠ°ΠΏΠ° ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΆΠ΄Π΅Ρ Π½Π΅ΡΠ²ΠΎΡΠΊΠΈΠ½Π³ ΠΈ ΡΠΊΡΠΊΡΡΡΠΈΡ ΠΏΠΎ ΠΏΠΈΡΠ΅ΡΡΠΊΠΎΠΌΡ ΠΎΡΠΈΡΡ.
Π€ΠΎΡΠΌΠ°Ρ: ΠΎΡΠ»Π°ΠΉΠ½ ΠΈΠ»ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½
ΠΠ΅ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠΈ: Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³, ΠΠ¦ Β«ΠΠ΅Π½ΡΠ°Β»
ΠΠ°ΡΠ° ΠΈ Π²ΡΠ΅ΠΌΡ: 29 ΡΠ΅Π²ΡΠ°Π»Ρ, 18:00
ΠΠ΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ»Π°ΠΉΠ½ ΠΌΠ΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ. Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½Π°
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ "Π―Π½Π΄Π΅ΠΊΡ.Π’Π°ΠΊΡΠΈ", ΠΠΠ: 7704340310
π7π₯2π₯΄1
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Type Erasure?
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΈΠ· Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ΠΊΠ»Π°ΡΡ-ΡΠ°ΠΉΠ»Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ -Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°Ρ . ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (type erasure). ΠΠ½ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Java 5 Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°ΠΌΠΈΠΌΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»Π»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Java 4.
Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
π ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ (bounded), Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΌΠ΅ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ°, ΠΈΠ½Π°ΡΠ΅ Object;
π Π ΠΌΠ΅ΡΡΠ°Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΡ ΠΊ ΡΡΠΎΠΌΡ ΡΠΈΠΏΡ;
π ΠΠ΅Π½Π΅ΡΠΈΡΡΡΡΡΡ bridge-ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ Π² ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠ»ΡΡΠΈΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠ½Π°, ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Field#getGenericType.
Π’ΠΈΠΏ ΡΠΎ ΡΡΠ΅ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Non-reifiableΒ».
Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² C++.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΈΠ· Π±Π°ΠΉΡΠΊΠΎΠ΄Π° ΠΊΠ»Π°ΡΡ-ΡΠ°ΠΉΠ»Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ -Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°Ρ . ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² (type erasure). ΠΠ½ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π² Java 5 Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠ°ΠΌΠΈΠΌΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°ΠΌΠΈ. Π’Π°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»Π»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Java 4.
Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
π ΠΡΠ»ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ (bounded), Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΌΠ΅ΡΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ°, ΠΈΠ½Π°ΡΠ΅ Object;
π Π ΠΌΠ΅ΡΡΠ°Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΡ ΠΊ ΡΡΠΎΠΌΡ ΡΠΈΠΏΡ;
π ΠΠ΅Π½Π΅ΡΠΈΡΡΡΡΡΡ bridge-ΠΌΠ΅ΡΠΎΠ΄Ρ.
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Π½ΠΎ ΠΎΡΡΠ°Π΅ΡΡΡ Π² ΠΌΠ΅ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎΠ»ΡΡΠΈΡΡ ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠ½Π°, ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Field#getGenericType.
Π’ΠΈΠΏ ΡΠΎ ΡΡΠ΅ΡΡΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Β«Non-reifiableΒ».
Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² Π½ΠΎΠ²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² C++.
π18π₯2
ΠΡΠ²Π΅ΡΠΈΡΡ β ΠΏΡΠΎΠΉΠ΄Π΅ΡΡ Π½Π° ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΡΠΉ ΠΊΡΡΡ "Java Developer. Professional" ΠΎΡ OTUS ΠΏΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅ + ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π·Π°ΠΏΠΈΡΡΠΌ ΠΎΡΠΊΡΡΡΡΡ ΡΡΠΎΠΊΠΎΠ² ΠΊΡΡΡΠ° ΠΊΡΡΡΠ°
ΠΡΡΠΏΠΏΠ° ΡΡΠ°ΡΡΡΠ΅Ρ 29 ΡΠ΅Π²ΡΠ°Π»Ρ - ΡΡΠΏΠ΅ΠΉ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΡ Π½Π° Π²ΡΠ³ΠΎΠ΄Π½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ .
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
π4π₯2
ΠΠ°ΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏ generic ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°?
Π ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° Π΅Π³ΠΎ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° (bound)
ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ², bounded-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΏΠΎΠ»Ρ ΡΠΈΠΏΠ°-ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»Ρ β ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΡΠ΅Π΄ΠΊΠΎΠΌ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄ΠΎ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ.
Π’ΠΈΠΏ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ Π½ΠΈΡ Π³ΡΠ°Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ Π³ΡΠ°Π½ΠΈΡΡ-ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²: <T extends Comparable & Serializable>. Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΠ· Π³ΡΠ°Π½ΠΈΡ, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»ΡΠΆΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡΡΠΎΠΌΡ Π³ΡΠ°Π½ΠΈΡΠ°-ΠΊΠ»Π°ΡΡ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° ΡΠ°Π½ΡΡΠ΅ Π³ΡΠ°Π½ΠΈΡ-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ β ΡΠΈΠΌΠ²ΠΎΠ» ?. ΠΠ°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΈΠΏΠ΅, ΡΡΠΎΡ ΡΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ. ΠΡΠΎ Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ.
ΠΠ»Ρ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ. ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ
Π ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ super Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°.
Π Π°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ΠΎΠ² ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ.
Π₯ΠΎΡΠΎΡΠΈΠΉ API Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ Π±ΡΡΡ ΠΊΠΎ- ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠΌ Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ Π±Π΅Π· bounded Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ΠΎΠ² Π½Π΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ Π³ΡΠ°Π½ΠΈΡΠ° Π½ΡΠΆΠ½Π° Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Joshua Bloch ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΡ PECS: Producer-extends, Consumer-super
Π ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° Π΅Π³ΠΎ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΠ° (bound)
class Foo<T extends Number>ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ extends ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Foo ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΠΌ Number, ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΈ.
ΠΠΎΠΌΠΈΠΌΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΡΠΈΠΏΠΎΠ², bounded-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π΄Π°Π΅Ρ ΠΏΡΠ°Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈ ΠΏΠΎΠ»Ρ ΡΠΈΠΏΠ°-ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»Ρ β ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΏΡΠ΅Π΄ΠΊΠΎΠΌ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΡΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π΄ΠΎ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ.
Π’ΠΈΠΏ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅ΡΡ Π½ΠΈΡ Π³ΡΠ°Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ Π³ΡΠ°Π½ΠΈΡΡ-ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²: <T extends Comparable & Serializable>. Π‘ΡΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΈΠ· Π³ΡΠ°Π½ΠΈΡ, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»ΡΠΆΠ°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠΎΡΡΠΎΠΌΡ Π³ΡΠ°Π½ΠΈΡΠ°-ΠΊΠ»Π°ΡΡ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½Π° ΡΠ°Π½ΡΡΠ΅ Π³ΡΠ°Π½ΠΈΡ-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ².
ΠΡΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ β ΡΠΈΠΌΠ²ΠΎΠ» ?. ΠΠ°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΌΡ Π½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΈΠΏΠ΅, ΡΡΠΎΡ ΡΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΡΠΌ. ΠΡΠΎ Π½Π΅ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, ΡΡΠΎ Π½Π΅ ΡΠΊΠ°Π·Π°ΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ.
ΠΠ»Ρ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠ°-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠΈΡΡ Π²Π΅ΡΡ Π½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ. ΠΠΎ Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π·Π΄Π΅ΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ², ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΠΊΠ°.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ Π½ΠΈΠΆΠ½ΡΡ Π³ΡΠ°Π½ΠΈΡΡ
Foo<? super Number> foo;ΠΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠΈΠΏΠ΅, Π½ΠΎ Π±ΡΠ΄Π΅ΠΌ Π·Π½Π°ΡΡ ΡΡΠΎ ΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΠΊ ΠΊΠ»Π°ΡΡΠ° Number. Π’ΠΎ Π΅ΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΠΌ Number, ΠΈΠ»ΠΈ Object.
Π ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ super Π·Π°ΠΏΡΠ΅ΡΠ΅Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π°.
Π Π°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ΠΎΠ² ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ.
Π₯ΠΎΡΠΎΡΠΈΠΉ API Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΌΠ΅ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ-Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ, ΡΠΎ Π΅ΡΡΡ Π±ΡΡΡ ΠΊΠΎ- ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠΌ Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΡΠΈ ΡΡΠΎΠΌ Π±Π΅Π· bounded Π²Π°ΠΉΠ»Π΄ΠΊΠ°ΡΠ΄ΠΎΠ² Π½Π΅ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ. Π§ΡΠΎΠ±Ρ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΡ, ΠΊΠ°ΠΊΠ°Ρ Π³ΡΠ°Π½ΠΈΡΠ° Π½ΡΠΆΠ½Π° Π² ΠΊΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Joshua Bloch ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΡ PECS: Producer-extends, Consumer-super
π11β€3π₯2
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΡΠ΅ΠΌΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌΡ ΠΊΡΡΡΡ ΠΈ Π½Π°ΡΠ½ΠΈΡΠ΅ ΡΠ²Π»Π΅ΠΊΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΡΠ΅ΡΠ΅ΡΡΠ²ΠΈΠ΅ Π² ΠΌΠΈΡ Java!
ΠΠ·ΡΡΠ°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ, ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π·Π±ΠΈΡΠ°ΠΉΡΠ΅ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΎΡΠ²ΠΎΠΈΡΡ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π Π§Π΅ΠΌΡ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ:
β Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°.
β Π Π°Π·Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
β ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ°ΡΠΈ.
πΌ ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΠΊΡΡΡ:
29 ΡΡΠΎΠΊΠΎΠ² (Π²ΠΈΠ΄Π΅ΠΎ ΠΈ/ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡ), 35 ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΉ Π² ΡΡΠ΅Π½Π°ΠΆΠ΅ΡΠ΅, 95 ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² + Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ.
ΠΡ Ρ Π½Π°ΠΌΠΈ?π
ΠΠ·ΡΡΠ°ΠΉΡΠ΅ ΠΎΡΠ½ΠΎΠ²Ρ, ΡΠΎΠ·Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π·Π±ΠΈΡΠ°ΠΉΡΠ΅ΡΡ Ρ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅. ΠΡΠ°ΠΊΡΠΈΠΊΠ°, ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΎΡΠ²ΠΎΠΈΡΡ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
π Π§Π΅ΠΌΡ Π²Ρ Π½Π°ΡΡΠΈΡΠ΅ΡΡ:
β Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°.
β Π Π°Π·Π΄Π΅Π»ΡΡΡ ΠΊΠΎΠ΄ Π½Π° ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
β ΠΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΠΊΠΎΠ΄Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ°ΡΠΈ.
πΌ ΠΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΠΊΡΡΡ:
29 ΡΡΠΎΠΊΠΎΠ² (Π²ΠΈΠ΄Π΅ΠΎ ΠΈ/ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡ), 35 ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΉ Π² ΡΡΠ΅Π½Π°ΠΆΠ΅ΡΠ΅, 95 ΠΏΡΠΎΠ²Π΅ΡΠΎΡΠ½ΡΡ ΡΠ΅ΡΡΠΎΠ² + Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ.
ΠΡ Ρ Π½Π°ΠΌΠΈ?π
β€8π₯4
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ?
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ/ΠΊΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΡΠΈΠΏΠΎΠ² β ΡΡΠΎ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅/ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ ΡΠΈΠΏΠΎΠ². ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΈΠΏΠ°ΠΌΠΈ-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ, ΠΎΠ½ΠΈ ΡΠ°ΠΌΠΈ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΠΊΠ°ΠΊ Π±Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ ΠΈ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ. ΠΠΎΠ½ΡΡΠ°Π²Π°ΡΠΈΠ°Π½ΡΠ½ΡΠ΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠΎΠΌ ΠΈ ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΌ.
ΠΠ΅Π³ΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΎΡΠΎΠ·Π½Π°ΡΡ ΡΡΠΈ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ :
π ΠΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ: 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 ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΠΏΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈ ΡΠΈΠΏΠΎΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.
π16π€3π3β€1π₯1
ΠΠ΅Π²ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ!
ΠΡΠ²ΠΎΠΉΡΠ΅ ΠΈΡ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΎΡ OTUS ΠΈ ΠΠ½Π΄ΡΠ΅Ρ ΠΠΎΠ»ΡΠΊΠΎΠ²Π° β ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² Unlimint.
β ΠΠΎΡΠ»Π΅ Π²Π΅Π±ΠΈΠ½Π°ΡΠ° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅:
β ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² GRASP;
β ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²;
β ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ GRASP, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΠ.
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 29 ΡΠ΅Π²ΡΠ°Π»Ρ Π² 20:00 ΠΌΡΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΡΡΡΠ° Β«ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ». ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
β‘οΈ ΠΡΠΎΠΉΠ΄ΠΈΡΠ΅ ΠΊΠΎΡΠΎΡΠΊΠΈΠΉ ΡΠ΅ΡΡ ΠΏΡΡΠΌΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΡΡΠΎΠ±Ρ ΠΏΠΎΡΠ΅ΡΠΈΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΡΡΠΎΠΊ ΠΈ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠΎΡΠΌΠ°ΡΠΎΠΌ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ: ΠΏΡΠΎΠΉΡΠΈ ΡΠ΅ΡΡ
ΠΡΠ²ΠΎΠΉΡΠ΅ ΠΈΡ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΎΡ OTUS ΠΈ ΠΠ½Π΄ΡΠ΅Ρ ΠΠΎΠ»ΡΠΊΠΎΠ²Π° β ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π² Unlimint.
β ΠΠΎΡΠ»Π΅ Π²Π΅Π±ΠΈΠ½Π°ΡΠ° Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅:
β ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, Π»Π΅ΠΆΠ°ΡΠΈΠ΅ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² GRASP;
β ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ ΠΈ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²;
β ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ GRASP, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ ΠΠ.
ΠΠ°Π½ΡΡΠΈΠ΅ ΠΏΡΠΎΠΉΠ΄ΡΡ 29 ΡΠ΅Π²ΡΠ°Π»Ρ Π² 20:00 ΠΌΡΠΊ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΊΡΡΡΠ° Β«ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ». ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
π4π₯1π1
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ bridge method?
Π Java ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ β ΠΈΡ ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΠΎΠ³Π΄Π° Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅, ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΡΠΈΠΏΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅ β Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅ ΡΠΈΠΏ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ, Π° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ ΡΡΠ΅ΡΡΡΠΉ Π΄ΠΎ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΊΠ°ΡΡΠΎΠΌ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ ΠΏΠΎ ΡΠΈΠ³Π½Π°ΡΡΡΠ΅ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ. Π Π΅Π³ΠΎ ΡΠ΅Π»Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠ°ΡΡΡΠ΅ΡΡΡ ΠΈ Π²ΡΠ·ΠΎΠ² Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠΎ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ bridge ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
Bridge method ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠ½Π°. ΠΠ³ΠΎ ΠΈΠΌΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΡΠ΅ΡΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΡΠ»Π°Π³ΠΎΠΌ synthetic, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ.
ΠΠΎΠΏΡΡΠΊΠ° Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π Java ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ β ΠΈΡ ΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΠΎΠ³Π΄Π° Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅, ΠΌΠ΅ΡΠΎΠ΄Ρ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΡΠΎΠ³ΠΎ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΡΠΈΠΏΠ° Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄Π΅ β Π² Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊΠ΅ ΡΠΈΠΏ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ, Π° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»Π΅ ΡΡΠ΅ΡΡΡΠΉ Π΄ΠΎ Π²Π΅ΡΡ Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ ΠΊΠ°ΡΡΠΎΠΌ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ ΠΏΠΎ ΡΠΈΠ³Π½Π°ΡΡΡΠ΅ Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΌ. Π Π΅Π³ΠΎ ΡΠ΅Π»Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠ°ΡΡΡΠ΅ΡΡΡ ΠΈ Π²ΡΠ·ΠΎΠ² Π΄Π΅Π»Π΅Π³ΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄. ΠΡΠΎ ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ bridge ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
Bridge method ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²ΠΈΠ΄Π΅ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ»Π΅ΠΊΡΠ½Π°. ΠΠ³ΠΎ ΠΈΠΌΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΡΡΠ΅ΡΡΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊ ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ ΡΠ»Π°Π³ΠΎΠΌ synthetic, ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΎΠ½ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ.
ΠΠΎΠΏΡΡΠΊΠ° Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
π21π₯4π2β€βπ₯1β€1
Π£Π·Π½Π°ΠΉΡΠ΅ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΎΡ OTUS, Π³Π΄Π΅ ΠΎΠΏΡΡΠ½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΡ ΠΏΡΠΈΠΎΡΠΊΡΠΎΠ΅Ρ Π·Π°ΠΊΡΠ»ΠΈΡΡΠ΅ Π½Π°ΡΠ΅Π³ΠΎ ΠΊΡΡΡΠ° ΠΈ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅Ρ:
βοΈ ΠΊΠ°ΠΊ Π³ΡΠ°ΠΌΠΎΡΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΡΠΎΠ³ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π½Π°Π²ΡΠΊΠΎΠ²;
βοΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ²Π»ΡΠ΅ΠΌ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ²;
βοΈ ΠΊΠ°ΠΊ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
ΠΠΎΡΡΡΠΏΠ½Π° ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅!
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576, www.otus.ruPlease open Telegram to view this post
VIEW IN TELEGRAM
π5π₯3
Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ heap pollution?
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, ΠΌΠ°ΡΡΠΈΠ²Ρ Π² Java ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½Ρ. Π Π·Π½Π°ΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° String[] ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Object[], ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΡΠ΄Π° Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Integer. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ArrayStoreException.
ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π·Π°ΡΠΈΡΠ΅Π½Ρ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡΡ. ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ List<Object> Π² List<String>, ΡΡΠ° ΠΆΠ΅ ΠΏΠΎ ΡΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΠΆΠ΅ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Heap pollution β ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ° Π·Π°ΡΠΈΡΠ° Π½Π΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
Heap pollution ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π² Π΄Π²ΡΡ ΡΠ»ΡΡΠ°ΡΡ : ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² ΠΈ ΠΏΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈ raw-ΡΠΈΠΏΠΎΠ².
Raw types β ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΈΠΌΠ΅Ρ Ρ raw types, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΠΊ heap pollution, ΡΠΆΠ΅ Π±ΡΠ» ΠΎΠΏΠΈΡΠ°Π½ Π²ΡΡΠ΅:
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π΄Π°ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ generic array creation. ΠΠ°ΡΡΠΈΠ½ΠΊΠ° Π²ΡΡΠ΅ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ, ΠΊ ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ varargs-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ.ΠΊ. varargs β Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-ΠΌΠ°ΡΡΠΈΠ². ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Β«possible heap pollutionΒ». ΠΡΠ»ΠΈ Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Ρ ΡΡΠΎ ΡΠΈΡΠΊΠ° Π½Π΅Ρ, Ρ Java 7 ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π°Π³Π»ΡΡΠ°Π΅ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @SafeVarargs.
ΠΠ°ΠΊ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ ΡΠ°Π½Π΅Π΅, ΠΌΠ°ΡΡΠΈΠ²Ρ Π² Java ΠΊΠΎΠ²Π°ΡΠΈΠ°Π½ΡΠ½Ρ. Π Π·Π½Π°ΡΠΈΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠΈΠΏΠ° String[] ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΏΠ° Object[], ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΡΠ΄Π° Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Integer. Π’Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ, Π½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ArrayStoreException.
ΠΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΈ Π·Π°ΡΠΈΡΠ΅Π½Ρ ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ½ΠΎΡΡΡΡ. ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ List<Object> Π² List<String>, ΡΡΠ° ΠΆΠ΅ ΠΏΠΎ ΡΡΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΡΠΆΠ΅ Π½Π° ΡΡΠ°ΠΏΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Heap pollution β ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ° Π·Π°ΡΠΈΡΠ° Π½Π΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ, ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Ρ ΡΠ°Π½ΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΠΏΠΎΠΌ. ΠΡΠΎΡΡΠ΅ΠΉΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
List<String> strings = (List) new ArrayList<Integer>();ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π²ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, heap pollution Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π±Π΅Π· Π²Π°ΡΠ½ΠΈΠ½Π³Π° ΡΡΠ°ΠΏΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Heap pollution ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΡΠΈ Π² Π΄Π²ΡΡ ΡΠ»ΡΡΠ°ΡΡ : ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ² ΠΈ ΠΏΡΠΈ ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈ raw-ΡΠΈΠΏΠΎΠ².
Raw types β ΡΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°. ΠΡΠΈΠΌΠ΅Ρ Ρ raw types, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΠΊ heap pollution, ΡΠΆΠ΅ Π±ΡΠ» ΠΎΠΏΠΈΡΠ°Π½ Π²ΡΡΠ΅:
List<String> strings = (List) new ArrayList<Integer>();ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ raw types Π½Π΅ Π½Π°Π΄ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅, ΠΏΡΠΈΡΠΈΠ½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ Π² Π³Π»Π°Π²Π΅ 26 Effective Java. ΠΡΠ»ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°Ρ Π½Π΅ Π½ΡΠΆΠ½Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» wildcard (<?>).
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π΄Π°ΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ generic array creation. ΠΠ°ΡΡΠΈΠ½ΠΊΠ° Π²ΡΡΠ΅ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ, ΠΊ ΡΠ΅ΠΌΡ ΡΡΠΎ ΠΌΠΎΠ³Π»ΠΎ Π±Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ.
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠΈΠΏ varargs-Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡ ΠΆΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Ρ.ΠΊ. varargs β Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ-ΠΌΠ°ΡΡΠΈΠ². ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Β«possible heap pollutionΒ». ΠΡΠ»ΠΈ Π²Ρ ΡΠ²Π΅ΡΠ΅Π½Ρ ΡΡΠΎ ΡΠΈΡΠΊΠ° Π½Π΅Ρ, Ρ Java 7 ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π·Π°Π³Π»ΡΡΠ°Π΅ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠ΅ΠΉ @SafeVarargs.
π12π₯3β€2π₯°1
ΠΡΠ²ΠΎΠΈΡΡ JVM Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΠΊΠ°Ρ Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½-ΠΊΡΡΡΠ΅ Β«Java Developer. AdvancedΒ» ΠΎΡ OTUS.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Ρ ΠΎΠΏΡΡΠΎΠΌ ΠΎΡ 2-Ρ Π»Π΅Ρ, ΠΆΠ΅Π»Π°ΡΡΠΈΡ ΡΠ³Π»ΡΠ±ΠΈΡΡ Π·Π½Π°Π½ΠΈΡ Π² ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ JVM, ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² ΠΎΠ±Π»Π°ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅.
ΠΠ° ΠΊΡΡΡΠ΅ Π²Π°Ρ ΠΆΠ΄ΡΡ:
β«οΈ ΠΆΠΈΠ²ΡΠ΅ Π²Π΅Π±ΠΈΠ½Π°ΡΡ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π·Π°Π΄Π°ΡΡ Π²ΠΎΠΏΡΠΎΡΡ ΡΠΊΡΠΏΠ΅ΡΡΠ°ΠΌ;
β«οΈΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ ΠΈ ΡΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ»ΠΈΠΎ;
β«οΈΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΡΡΠ½ΠΈΡΠΈ;
β«οΈ ΡΠ°ΡΡΡΠΎΡΠΊΠ° Π½Π° ΠΊΠΎΠΌΡΠΎΡΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ .
Π Π΅ΠΊΠ»Π°ΠΌΠ°. ΠΠΠ Β«ΠΡΡΡ ΠΎΠ½Π»Π°ΠΉΠ½-ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅Β», ΠΠΠ Π 1177746618576Please open Telegram to view this post
VIEW IN TELEGRAM
π₯6π2π₯°2β€1
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ²?
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΏΠΎΠ². 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. Π’Π°ΠΊΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ.
π11π₯4β€2β€βπ₯1