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

🧠 Нюанс с Optional.map() ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌΠΈ Optional

🧠 Нюанс с Optional.map() ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌΠΈ Optional МногиС Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π΅ ΠΏΠΈΡˆΡƒΡ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅: Optional<User> user = findUserById(id); // Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Optional<User> Optional<String> email = user.map(User::getEmail); // getEmail Ρ‚ΠΎΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Optional<String> ⚠️ ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: map() Π² Optional Π½Π΅ "Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚" Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ Optional. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ email Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΈΠΏΠ° Optional<Optional<String>>, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Π½Π΅ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. πŸ“Œ ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ способ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ flatMap(): Optional<String> email = user.flatMap(User::getEmail); πŸ’‘ flatMap() позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ "Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΈ", Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΠΈ map() ΡƒΠΆΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Optional. πŸ” Аналогичная ситуация с Stream.map() β€” Ссли Π²Π½ΡƒΡ‚Ρ€ΠΈ map() вызываСтся ΠΌΠ΅Ρ‚ΠΎΠ΄, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ Stream, Ρ‚ΠΎ получится Stream<Stream<T>>, ΠΈ ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ flatMap(). πŸ§ͺ Мини-памятка: * map() β€” ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ (T β†’ R); * flatMap() β€” ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Optional ΠΈΠ»ΠΈ Stream (T β†’ Optional<R> ΠΈΠ»ΠΈ T β†’ Stream<R>). πŸ‘‰ @BookJava

506 просмотров

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

1Β 614 подписчиков Β· IT ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ

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

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

Π•Ρ‰Ρ‘ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅ Β«IT ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΒ»

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

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