인프런 커뮤니티 질문&답변

sy k님의 프로필 이미지
sy k

작성한 질문수

스프링 핵심 원리 - 기본편

주문과 할인 도메인 개발

스프링 핵심원리 -기본편(주문과 할인 도메인 개발) 관련

해결된 질문

작성

·

206

0

안녕하세요, 스프링 핵심원리 -기본편(주문할인 도메인 개발) 수강중에 궁금해서 남겨봅니다.
 
아래의 코드에서 멤버 변수를 final로 선언 하는 이유가 무엇인지 궁금합니다. 자바에서 final은 변하지 않는값, 상수로 알고 있는데 저기서 final로 멤버변수를 설정한 이유가 있는것 일까요?
 
 
public class OrderServiceImpl implements OrderService{

private final MemberRepository memberRepository = new MemoryMemberRepository();
private final DiscountPolicy discountPolicy = new FixDiscountPolicy();


@Override
public Order createOrder(Long memberId, String itemName, int itemPrice) {
Member member = memberRepository.findById(memberId);
discountPolicy.discount(member, itemPrice);
int discountPrice = discountPolicy.discount(member, itemPrice);

return new Order(memberId, itemName, itemPrice, discountPrice);
}
}
 
 

답변 1

0

안녕하세요. sy k님, 공식 서포터즈 OMG입니다.

final을 사용한 이유는 불변객체가 되어 재할당을 막기 위함입니다. 

코드 중간에 변경되는 것을 막기 위한 것이 주 이유이며 추가적으로 가져갈 수 있는 점은 @RequiredArgsConstructor 로 생성자 주입을 간편히 받을 수 있습니다.

감사합니다.

sy k님의 프로필 이미지
sy k

작성한 질문수

질문하기