ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ orElse๋ฅผ ์ฌ์ฉํ ์ฝ๋๊ฐ ์์๋๋ฐ ๋ด ์๋๋๋ก ์๋์ ํ์ง ์์์ ์๋ฌธ์ ์ด ๋ค์๋ค.
๊ฒ์๊ธ์ ์ ๋ก๋ํ ๋ ์์น ์ ๋ณด๋ฅผ ๊ฐ์ด ์ ๋ก๋ํ๋๋ฐ, ์ด ๊ณผ์ ์์ ์์น DB์ ํด๋น ์ ๋ณด๊ฐ ์๋ค๋ฉด ์์น ์ ๋ณด๋ฅผ ์ ์ฅํ์ง ์๊ณ , ์๋ค๋ฉด ์๋ก ๋ง๋ค๋๋ก ํ๋ ๋ก์ง์ด์๋ค!
orElse๋ฅผ ์ฌ์ฉํ๋๋ ์์น ์ ๋ณด๊ฐ ๋ ๊ฐ๊ฐ ์ ์ฅ์ด ๋๋ ์์ด๋ฌ๋ํ ์ํฉ์ด์๋ค...
ํด๋น ๋ก์ง์ฒ๋ผ ์ฝ๋๋ฅผ ์งฐ๊ณ , ๋น์ฐํ placeRepository์์ null๊ฐ์ ๊ฐ์ ธ์์ ๋๋ง orElse๊ฐ ์ํ๋๋ค๊ณ ์๊ฐ์ ํ์๋ค.
๊ทผ๋ฐ ์ฐพ์๋ณด๋๊น ๋ฐ์ ๋ง๊ณ ๋ฐ์ ํ๋ ธ์๋ค!!
orElse()์ orElseGet()์ ๊ณตํต์
๋ ๋ฉ์๋ ๋ชจ๋ Optional ํด๋์ค ๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ค์ ๊ฐ์ด null์ผ ๊ฒฝ์ฐ ์ด๋ค ๊ฐ์ผ๋ก ๋์ฒดํด์ return ํด์ฃผ๋์ง๋ฅผ ์ ์ํด ์ฃผ๋ ๊ฒ์ด๋ค.
orElse()์ orElseGet()์ ์ฐจ์ด์
public T orElse(T other) {
return value != null ? value : other;
}
public T orElseGet(Supplier<? extends T> other) {
return value != null ? value : other.get();
}
Optional ํด๋์ค์ orElse ๋ฉ์๋๋ฅผ ๋ณด๋ฉด T ํด๋์ค๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ์๊ณ ,
orElseGet์ T ํด๋์ค๋ฅผ ์์๋ฐ์ ํ์ ํด๋์ค๋ฅผ ๋ฆฌํดํด์ฃผ๋ Supplier ํจ์ ์ธํฐํ์ด์ค๋ฅผ ๋ฐ๊ณ ์๋ค.
orElse()๋ ๋ฉ์๋๋ฅผ ์ธ์๋ก ๋ฐ๊ณ ์๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ ์ธ์๋ก ๋ฐ๋๋ค. ๋ฐ๋ผ์, orElse() ๋ฉ์๋ ์ธ์๋ฅผ ํ ๋นํ๊ธฐ ์ํด์ ๊ทธ ์์ ์๋ ๋ฉ์๋๋ฅผ ์คํ์ํจ ํ orElse์ ์ธ์๋ก ํ ๋นํ๊ธฐ ๋๋ฌธ์ Optional์ null๊ฐ์ ์๊ด์์ด orElse()์ ๋ฉ์๋๊ฐ ์คํ๋๊ฒ ๋๋ค.
๋ฐ๋๋ก orElseGet()์ ๊ฒฝ์ฐ์ ์ธ์๋ก ์ ๋ฌ๋ Supplier ๋ฉ์๋๋ Optional์ ๊ฐ์ด ์์ ๋๋ง get()์ ํตํด ์คํ๋๊ธฐ ๋๋ฌธ์ Optional์ด null๊ฐ์ผ ๋๋ง ์คํ๋๋ ๊ฒ์ด๋ค.
๊ทธ๋์ orElseGet()์ ์ฌ์ฉํด์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํด๋ณด์๋๋ฐ ์๋ ์ํ๋ ๋ก์ง๋๋ก ์์น ์ ๋ณด๊ฐ ํ๋๋ง ์์ฑ๋ ๊ฒ์ ๋ณผ ์ ์์๋ค!!
'JAVA & OOP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] Garbage Collection(๊ฐ๋น์ง ์ปฌ๋ ์ )์ด๋? (0) | 2024.03.31 |
---|---|
[JAVA] HashCode์ equals ์ค๋ฒ๋ผ์ด๋ฉ (0) | 2024.03.21 |
Java 17์ ์ฌ์ฉํ๋ ์ด์ (2) | 2024.01.06 |
JAVA :: HashMap, hashing ๊ฐ๋ ์ ๋ฆฌ (0) | 2022.08.14 |
JAVA :: Optional ํด๋์ค ๊ฐ๋ ์ ๋ฆฌ (0) | 2022.07.31 |