Optional์ ๋ฐ๋ก ๊ณต๋ถํ ์ ์ด ์์ด์ ๋์ถฉ ์ค๋ฅ๋ง ๋ดค์ ๋ ์ฌํ๊ป isPresent์ด๋ ifPresent๊ฐ ๊ฐ์ ์ ์ธ์ค ์์๋ค ..
๋ฐ๋ถ ๊ทธ๋์ isPresent()์์ ์ธ์๋ก ์ ๋๋ค์์ ์จ์ฃผ๋์ง ์ดํด๊ฐ์๋๋ค..ํ์ง๋ง ๋ค๋ฅธ ๋ฉ์๋์๋ค๋๊ฒ ใ .. ํฌ์คํธ๊ฐ ๋๋ฌด ์งง์ ์ฃผ์
์ํผ ์ค๋์ Optional์ด ๋ญ์ง ์์ฃผ ์งง๊ฒ ์ดํด๋ณด๊ณ isPresent/ifPresent/ifPresentOrElse ๋ฉ์๋์ ๋ํด ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
Optional์ด๋?
์กด์ฌํ ์๋ ์์ง๋ง ์ ํ ์๋ ์๋ ๊ฐ์ฒด,
์ฆ, “null์ด ๋ ์๋ ์๋ ๊ฐ์ฒด”์ ๊ฐ์ธ๊ณ ์๋ ์ผ์ข ์ ๋ํผ ํด๋์ค์ด๋ค.
์์๊ฐ ์๊ฑฐ๋ ์ต๋ ํ๋ ๋ฐ์ ์๋ Collection์ด๋ Stream์ด๋ผ๊ณ ์๊ฐํด๋ ์ข๋ค.
null ๋๋ฌธ์ ์๊ธฐ๋ ๊ท์ฐฎ์์ ํธ๋ค๋งํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค๊ณ ํ๋ค.
ifPresent ๋ฉ์๋
๋์ถฉ ifPresent ์์ action์ ๋ฃ์ด์ฃผ๋ฉด presentํ ๋ ์คํํ๋ค๋ ์๊ธฐ๋ค. ๋ง์ฝ presentํ๋ฐ action์ด ์ ์๋์ด์์ง ์์ผ๋ฉด NullPointerException์ ๋ฐํํ๋ค.
.ifPresent(person -> System.out.println("์ฌ๋ ์กด์ฌํด์ฉ"));
๋์ถฉ person์ด ์กด์ฌํ๋ฉด ์ฌ๋ ์กด์ฌํด์ฉ ์ถ๋ ฅํ๋ ์ฝ๋
๋ด๊ฐ ๊ฐ์์์ ์ดํด ์๋๋ ์ฝ๋๋ ์ด ์๋ ์ฝ๋์ด๋ค. ๊ทธ๋์ ifPresent์ ๋ํด์ ๊ณต๋ถํ๊ฒ๋๋น
memberRepository.findByName(member.getName())
.ifPresent(m->{
throw new IllegalStateException("์
์ด๋ฏธ ์กด์ฌํ๋ ํ์์ใ
");
});
์ด ์ฝ๋๋ฅผ ๋ค์ ํด์ํด๋ณด๋ฉด memberRepository์์ findByName์ผ๋ก ์ด๋ค ์ด๋ฆ์ ๊ฐ์ง Optional<Member>๋ฅผ ๋ฝ์๋ด๊ณ , ๋ง์ฝ์ ๋ฉค๋ฒ๊ฐ ์กด์ฌํ๋ค๋ฉด ifPresent์ ์ํด IllegalStateException์ด throw๋๋ ๊ฒ์ด๋ค. (memberRepository๊ฐ Optional<Member> ์ด๋ผ๊ณ ๊ฐ์ )
ifPresentOrElse ๋ฉ์๋
์๋ ifPresent์ ๊ฑฐ์ ๋น์ทํ๋ฐ ๊ทธ๋ฅ Else์ธ ๊ฒฝ์ฐ๊น์ง ํธ๋ค๋งํด์ฃผ๋ ๋ฉ์๋์ด๋ค.
.ifPresentOrElse(
person -> System.out.println("์ฌ๋ ์์ด์ "),
() -> System.out.println("์ฌ๋ ์์ด์ ")
);
person ์กด์ฌ ํ ๊ฒฝ์ฐ "์ฌ๋ ์์ด์ " ์ถ๋ ฅ, ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ "์ฌ๋ ์์ด์ " ์ถ๋ ฅ
isPresent ๋ฉ์๋
๊ทธ๋ฅ boolean ๋ฐํํ๋ ์ ๋ค. ๋์ด์ ํ ๋ง ์์
์๋ ์ค๋ ์คํ๋ง๋ถํธ ๋จ์๊ฑฐ ์ ๋ก๋ํ๋ ค๊ณ ํ๋๋ฐ ์ค๊ฐ์ ๋ชจ๋ฅด๋ ๊ฐ๋ ์ ๋ฆฌํ๋๊น ๋์ด ์๋จ ์ด์นด์ฅฌ....ใ ใ ใ
References
https://www.daleseo.com/java8-optional-after/
'๐ฉโ๐ป Programming & Algorithm > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Stream ์ด๋? (0) | 2023.03.14 |
---|