몰랐다가 알게된 부분
private static HashMap<Long, Member> store = new HashMap<Long, Member>();
스테틱을 지정하기 전에는 Map에 값을 저장해도, 메소드 내 map과 관련된 클래스에 새로운 인스턴스를 생성했을 때 저장한 데이터를 가져오지 못한다.
@Override
public void join(Member member) {
MemberRepositoryImpl memberRepository = new MemberRepositoryImpl();
memberRepository.storeMember(member);
}
@Override
public Member findMember(Long memberId) {
MemberRepositoryImpl memberRepository = new MemberRepositoryImpl();
return memberRepository.findMember(memberId);
}
스테틱 변수로 지정하면 다른 메소드에서 새로운 인스턴스를 생성해도, map값을 가져올 수 있는 것 확인 static(고정) 고정값으로 이해
Assertions.assertThat(order.getDiscountPrice()).isEqualTo(1000);
테스트 코드 작성시 Assertions.assertThat 으로 비교문 작성
테스트 코드가 없다면 일일이 콘솔을 찍어보거나 system.out.println()으로 확인해봐야함
대신 junit 을 사용하여 테스트하고자하는 메소드에 @Test 어노테이션을 붙인 후
비교 대상에
Assertions.assertThat("a").isEqualTo("b");
를 작성해서 두 변수 혹은 두 객체가 같으면 녹색불로 정상이 나오고 다르면 빨간불이 뜬다
final
final 키워드가 붙은 변수는 초기화 후 변경할 수 없음, 변경하려고 하면 컴파일 에러가 발생 , 클라스에서 final을 붙이면 상속을 할수 없는 클라스가 됨
정리
final variables, arguments : 값이 변경되지 않도록 만듬
final class : 클래스를 상속하지 못하도록 만듬
final method : 메소드가 오버라이드되지 못하도록 만듬
주의할 점
final 변수는 초기화 이후 값 변경이 발생하지 않도록 만듭니다.