๋ฐ์ํ
์๋ฐ 8์์ ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ Optional<E> ๋ฅผ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณด์.
Member member = new MemberRepository(member.findById(id));
if(member != null){
...
}else{
...
}
findById ๋ฉ์๋๊ฐ member ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ค๊ณ ํ๋ฉด, ๋ง์ฝ member๊ฐ null์ผ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด ์ด๋ ๊ฒ ์ฝ๋ฉ์ ํด์ผํ๋ค.
findById๊ฐ memberํ์ ๊ฐ์ฒด ๋ง๊ณ , Optional<Member>ํ์ ์ ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๊ฒ ํ๋ค๋ฉด?
// ์ ์ข์
List<Member> members = team.getMembers();
return Optional.ofNullable(members);
// ์ข์
List<Member> members = team.getMembers();
return members != null ? members : Collections.emptyList();
๋ง์ฝ ํ์์ ์กฐํํ์๋ ์ค๋ณตํ์์ด ์๋ ๊ฒฝ์ฐ.
Optional<Member> result = memberRepository.findByName(member.getName());
result.ifPresent(m ->{
throw new IllegalStateException("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.")
}); // ์ด๋ ๊ฒ ์ฐ๋ฉด ์ ์์๋๊น ๋ฐ๋ก ifPresent๋ฅผ ์ฌ์ฉํ๊ฒ ํด๋ณด์.
Optional<T> ๋ ๊ตณ์ด ๋ณ์์ ์๋ด์๋ ๋ฐ๋ก .ifPresent() ์ฌ์ฉ ํ ์ ์๋ค.
์๋ ์ฝ๋๋ฅผ ๋ณด์.
memberRepository.findByName(member.getName())
.ifPresent(m -> { //ifPresent ๋ ๊ฐ์ด ์์๋ ์คํํ๋ ๊ฒ์ด๋ค.
throw new IllegalStateException("์ด๋ฏธ ์กด์ฌํ๋ ํ์์
๋๋ค.");
});
}//์ด๊ฒ ํจ์ฌ ๊น๋ํด ๋ณด์ด๊ณ ์ข๋ค. ํ์ง๋ง, findByName์ ์ด์ฉํ ๋ก์ง์ด ๋ค ๋ณด์ฌ์ง๊ธฐ ๋๋ฌธ์, ๋ฉ์๋๋ก ๋ฝ๋๊ฒ ์ข๋ค. ๋จ์ถํค(ctrl+T)
์ถ์ฒ :
๋ฐ์ํ