23.05.24 15:23 작성
·
951
0
[질문 내용]
회원서비스개발에서 2:18에
1. 무슨 단축키를 누르면 Optional<Member> byName = 이 뜨나요? 저는 그냥 타이핑했는데 어떻게 하면 그렇게 생기죠?
2.그리고 단축키 command option v 로 byName을 result로 변경했는데 그것도 단축키를 하면 왜 단축키를 했을 때 수업처럼 옵션이 안뜰까요
3.Optional<Member> byName = 부분 지우고
result부분 지우고 코드 정리했을 때 저는
.ifPresent부분이 에러가 납니다.
4.강의에 4:56 부분 control + t 로 method입력해서 Extract Method 가 뜨는데 저는 안뜹니다.command option m 단축키로 Extract Method를 시도했는데 사용할수없다는데..어떻게해야되나요
확인부탁드릴게요...
답변 2
0
0
안녕하세요, leeha223 님. 공식 서포터즈 y2gcoder 입니다.
인텔리제이 단축키 사용에 대해 질문해주셨습니다.
무슨 단축키를 누르면 Optional<Member> byName = 이 뜨나요? 저는 그냥 타이핑했는데 어떻게 하면 그렇게 생기죠?
강의 코드 기준으로 memberRepository.findByName(member.getName()); 까지 타이핑하시고 findByName 메서드 위에 커서가 있는 상태에서 command + option + v 를 하시면 자동으로 변수로 추출할 수 있습니다.
그리고 단축키 command option v 로 byName을 result로 변경했는데 그것도 단축키를 하면 왜 단축키를 했을 때 수업처럼 옵션이 안뜰까요
위에서 말씀드렸던 단축키로 변수를 뽑아내면 바로 그 직후에만 뜨는 추천 변수명 리스트입니다. 이미 타이핑 한 상태에서는 해당 변수명에 커서를 올려도 생기지 않습니다.
Optional<Member> byName = 부분 지우고
result부분 지우고 코드 정리했을 때 저는
.ifPresent부분이 에러가 납니다.
올려주신 코드를 봤을 때
memberRepository.findByName(member.getName()); //여기 ; 때문에 밑에서 예외가 발생
.ifPresent(m -> {...});
findByName() 후에 세미콜론을 입력하여 끝을 내셨기 때문입니다.
ifPresent()는 Optional 객체에 체이닝하여 사용할 수 있는 메서드입니다. memberRepository.findByName()의 반환 타입이 Optional 객체이기 때문에, ifPresent()를 연결해서 사용할 수 있는데, 세미콜론을 사용해서 이미 끝을 내고 그 다음에 .ifPresent()로 연결하려고 하셔서 자바 컴파일러가 해당 부분이 문제라고 알려주고 있습니다.
memberRepository.findByName(member.getName()).ifPresent(m -> {...});
예를 들면 ifPresent()는 위와 같이 연결해서 사용하는 메서드입니다.
감사합니다.