ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ содСрТимому
ΠœΠ°ΠΊΡΠΈΠΌΠ΅Ρ‚Π΅Ρ€

πŸ” ΠŸΠΎΡ‡Π΅ΠΌΡƒ Optional β€” это Π½Π΅ Π·Π°ΠΌΠ΅Π½Π° null Π²Π΅Π·Π΄Π΅ ΠΈ всСгда

πŸ” ΠŸΠΎΡ‡Π΅ΠΌΡƒ Optional β€” это Π½Π΅ Π·Π°ΠΌΠ΅Π½Π° null Π²Π΅Π·Π΄Π΅ ΠΈ всСгда ΠŸΡ€ΠΈΠ²Π΅Ρ‚! БСгодня Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ ошибок ΠΏΡ€ΠΈ использовании Optional Π² Java. МногиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ, особСнно Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠ΅, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Optional Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ null, думая, Ρ‡Ρ‚ΠΎ это автоматичСски Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΠ΄ "бСзопасным". Но Ρ‚Π°ΠΊ Π»ΠΈ это? πŸ“Œ ΠšΠ»ΡŽΡ‡Π΅Π²Π°Ρ идСя Optional β€” ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΌ отсутствии значСния Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹Π·ΠΎΠ²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. А Π½Π΅ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ всС поля ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π½Π° Optional. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΠ»ΠΎΡ…ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ: public class User { private Optional<String> name; // ❌ НС Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ } ΠŸΠΎΡ‡Π΅ΠΌΡƒ это ΠΏΠ»ΠΎΡ…ΠΎ: - УвСличиваСтся ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ сСриализации (особСнно с Jackson, GSON). - НС соотвСтствуСт Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠΉ Π·Π°Π΄ΡƒΠΌΠΊΠ΅: Optional β€” это Π½Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΏΠΎΠ»Π΅ΠΉ. - ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с JPA (Hibernate Π½Π΅ Π΄Ρ€ΡƒΠΆΠΈΡ‚ с Optional-полями). - ΠŸΠΎΠ½ΠΈΠΆΠ°Π΅Ρ‚ΡΡ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. πŸ’‘ Π›ΡƒΡ‡ΡˆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Optional Π²ΠΎΡ‚ Ρ‚Π°ΠΊ: public Optional<User> findUserById(Long id) { // Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ Optional, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ } Π’ΠΎ Π΅ΡΡ‚ΡŒ Optional β€” это ΠΏΡ€ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄, Π° Π½Π΅ ΠΏΡ€ΠΎ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…. Если ΠΊΡ€Π°Ρ‚ΠΊΠΎ: - βœ… Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Optional Π² сигнатурах ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. - ❌ НС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉ Optional Π² полях ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… конструктора. А Ρ‚Ρ‹ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΡˆΡŒ Optional Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…? Π‘Ρ‹Π» Π»ΠΈ ΠΎΠΏΡ‹Ρ‚ с Π΅Π³ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ? Пиши Π² ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ…πŸ‘‡ πŸ‘‰ @BookJava

611 просмотров

Канал Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ ΠœΠ°ΠΊΡΠΈΠΌΠ΅Ρ‚Π΅Ρ€Π°

1Β 609 подписчиков Β· Наука

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°Π½Π°Π»Π°

ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠ°Π½Π°Π»Π°

Π•Ρ‰Ρ‘ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ «Наука»

Π§ΠΈΡ‚Π°Ρ‚ΡŒ дальшС

Π”Π²Π° Ρ€Π°Π·Π° Π² нСдСлю свСТиС посты этого ΠΊΠ°Π½Π°Π»Π° β€” Π½Π° ΠΏΠΎΡ‡Ρ‚Ρƒ ΠΈ Π² Π»ΠΈΡ‡Π½ΡƒΡŽ Π»Π΅Π½Ρ‚Ρƒ. Π‘Π΅Π· ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ поиска ΠΊΠ°Π½Π°Π»Π° Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ.