24.08.12 14:07 작성
·
124
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
안녕하세요 해당 부분에서 오류 발생되는데 왜 그런 걸까요
public class MemoryMemberRepository implements MemberRepository { 이부분에 빨간줄이 있습니다.
package hello.hellospring.repository;
import hello.hellospring.domain.Member;
import java.util.*;
/**
* 동시성 문제가 고려되어 있지 않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려
*/
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
@Override
public Optional<Member> findByID(long id) {
return Optional.ofNullable(store.get(id));
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values());
}
@Override
public Optional<Member> findByName(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
public void clearStore() {
store.clear();
}
}
답변 2
0
안녕하세요. 장진웅님, 공식 서포터즈 OMG입니다.
올리신 코드만 보았을 때 강의와의 차이점으로 findById
가 아닌 findByID
로 메서드 이름의 id에서 D
가 대문자네요.
MemoryMemberRepository와 MemberRepository를 복사-붙여넣기하여 확인해보시고 그래도 오류가 발생한다면 발생한 오류 메시지를 남겨주세요.
MemberRepository
import hello.hellospring.domain.Member;
import java.util.List;
import java.util.Optional;
public interface MemberRepository {
Member save(Member member);
Optional<Member> findById(Long id);
Optional<Member> findByName(String name);
List<Member> findAll();
}
MemoryMemberRepository
import hello.hellospring.domain.Member;
import java.util.*;
/*** 동시성 문제가 고려되어 있지 않음, 실무에서는 ConcurrentHashMap, AtomicLong 사용 고려 */
public class MemoryMemberRepository implements MemberRepository {
private static Map<Long, Member> store = new HashMap<>();
private static long sequence = 0L;
@Override
public Member save(Member member) {
member.setId(++sequence);
store.put(member.getId(), member);
return member;
}
@Override
public Optional<Member> findById(Long id) {
return Optional.ofNullable(store.get(id));
}
@Override
public List<Member> findAll() {
return new ArrayList<>(store.values());
}
@Override
public Optional<Member> findByName(String name) {
return store.values().stream()
.filter(member -> member.getName().equals(name))
.findAny();
}
public void clearStore() {
store.clear();
}
}
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 장진웅님,
공유하신 코드와 관련하여 MemoryMemberRepository implements MemberRepository
부분에 빨간 줄이 생기는 문제는 일반적으로 몇 가지 원인으로 인해 발생할 수 있습니다. 주로 다음과 같은 이유입니다:
- MemberRepository
인터페이스가 해당 클래스 파일에 제대로 import되지 않았거나 해당 인터페이스 파일에 문제가 있는 경우.
- MemberRepository
인터페이스에서 정의한 메소드를 MemoryMemberRepository
클래스에서 모두 구현하지 않았을 경우
- Member
클래스 관련 문제로, Member
클래스가 올바르게 정의되어 있고 필요한 메서드(setId
, getName
등)를 제공하는지 확인 필요.
질문하신 내용에 기반하여, 코드에서 MemberRepository
인터페이스의 모든 메소드(save
, findById
, findAll
, findByName
)를 구현하신 것으로 보이며, 이러한 경우 일반적인 원인은 첫 번째 또는 두 번째로 생각될 수 있습니다. MemberRepository
인터페이스의 정의 상태와 import
문이 올바른지, 그리고 인터페이스의 모든 메소드가 올바르게 구현되었는지 다시 한번 확인해보시기 바랍니다.
이 답변을 바탕으로 문제 해결에 필요한 구체적인 수정이나 보완을 진행해보시기 바랍니다.
제공된 정보에 기반하여 가장 관련이 있을 것으로 판단되는 조언과 링크를 제공드리었습니다. 추가적으로 이와 비슷한 문제 해결을 위해 참고할 수 있는 섹션3 - MemoryMemberRepository.java 링크도 유용할 수 있습니다. 해당 링크에서는 MemoryMemberRepository
클래스 구현 및 관련 오류 해결에 대한 설명이 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.