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

zzzzz님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

로그인 처리1 - 쿠키, 세션-회원 가입 질문있어요.

작성

·

125

·

수정됨

0

public List<Member> findAll(){에서 new가 나오는 이유가 ArrayList<>의 값을 초기화 해주고 ArrayList배열에 값을 저장해주기 위함인가요?

import lombok.extern.slf4j.Slf4j;

import org.springframework.stereotype.Repository;

import java.util.*;

 

@Slf4j

@Repository

public class MemberRepository {

private static Map<Long,Member> store=new HashMap<>();

private static long sequence=0L;

public Member save(Member member){

member.setId(++sequence);

log.info("save:member={}",member);

store.put(member.getId(),member);

return member;

}

public Member findById(Long id){

return store.get(id);

}

public Optional<Member> findByLoginId(String loginId){

return findAll().stream()

.filter(m->m.getLoginId().equals(loginId))

.findFirst();

}

public List<Member> findAll(){

return new ArrayList<>(store.values());

}

}

 

  1. 멤버에 setLoginId 부분에서 에러가 납니다. 테스트 데이터를 보와도 틀린 부분을 못찼겠습니다.

     

  2. 전체코드 첩부합니다. https://drive.google.com/file/d/1uzae3ASJmi4P9EiB-wPMaEnRfgEX_drj/view?usp=drive_link

    Member member = new Member();
    member.setLoginId("test");
    member.setPassword("test!");
    member.setName("테스터");
    
    memberRepository.save(member);

     

 

답변 1

0

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

(1)

store에 저장된 값만 추출하여 새로운 ArrayList 인스턴스를 반환하기 위함입니다 ^^

다음 링크를 참고해주세요 😀

참고)

https://www.inflearn.com/questions/572022

 

(2)

아래가 강의에서 제공해드리는 코드인데요,

image

컴파일 오류가 발생하는 코드가 init()메서드 바깥에 있네요 😀

image

감사합니다.

zzzzz님의 프로필 이미지
zzzzz
질문자

갈호바깥:init메소드() 밖 으로 지칭

init메소드() 괄호 바깥에 있어도 애초에 바깥에서 객체 생성해줬고 private final memberRepository도 init메소드() 괄호 바깥부분에서 생성했는데 컴파일 에러는 안나야 하는거 아닌가요?

작성하신 코드는 아래와 같이

클래스의 멤버변수를 선언하는 헤더 영역에서 변수를 초기화는 것과 차이가 없습니다.

.

자바에서는 인스턴스 변수를 선언하고 초기화할 때, 이를 메서드나 생성자 내부에서 수행해야 합니다

image

zzzzz님의 프로필 이미지

작성한 질문수

질문하기