Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2nd seminar : 기본과제 #2

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open

2nd seminar : 기본과제 #2

wants to merge 5 commits into from

Conversation

YuSuhwa-ve
Copy link
Collaborator

@YuSuhwa-ve YuSuhwa-ve commented Apr 20, 2023

2차 세미나 기본과제완료.....
에구..... 힘드네요.....
아직도 1차세미나 생각과제 못함....
언능 할께요.

과제는 Post 도메인만들고, 컨트롤러 서비스단 만들었음요
api는 글등록, 아이디로조회, 제목으로 찾기 입니다.
db는 연결하지 않고 리스트로 임으로 만들어서 서버를 재실행할때마다 달라집니다.

의문점!!!!

이해가 안가는 부분이 하나 있습니당.

제가 알기로...
ArrayList<Object> 의� 경우 arrayList.contain(), arrayListIndexOf() 두 메서드다

  1. 리스트의 원소의 equals 메소드를 실행하며
  2. true이면 각자 값을 반환하는것(containtrue를, indexOf는 해당 index를) 으로 알고있는데

저의 코드중 Post 등록 로직(PostService register 메소드)에서 같은 방식으로 userList에서 contains, indexOf 메소드들을 사용했을때는 User class의 equals 메소드가 실행이 아예 되지 않았습니다.

왜 그런걸까요...?

해결!

유난 오빠의 팁을 보고 정의를 찾아봤더니 해결했습니다.
자세한 글은 PostService.java에 주석으로 적어놓음.
모두 ㄱㅅㄱㅅ

@YuSuhwa-ve YuSuhwa-ve changed the title 2nd seminar 2nd seminar : 기본과제 Apr 20, 2023
@unanchoi
Copy link

  • 구현된 class api문서를 확인해보세요.


//왜 재정의하느냐....
// List의 contains() 메소드와 indexOf() 메소드는 List안에 값이 같으면 true를 리턴하는데
// 이때 '값이 같으면'이 List안의 객체의 equals 메소드를 실행시켜 확인하기 때문
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P5] 오오... contains() 메소드와 indexOf() 메소드가 equals() 메소드를 실행시켜서 확인하는구나! 몰랐던 사실이다..!!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

따봉입니다!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 좋은 내용 알아가용!!!!

//contains 메소드와 indexOf 메소드르 실행할때 arrayList의 원소객체의 euqals 메소드르 실행한다고 알고있는데
// 왜인지 실행이 안됨......
/*
if(!userList.contains(request.getUserName())){
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P5] 나도 이부분 왜 안되는지 열심히 찾아봤는데 진짜 왜 안될까?? 혹시 알게되면 comment나 카톡으로 공유해주세요!!

Copy link
Member

@ddongseop ddongseop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

같은 예제인데도 배울점이 많았던 코드리뷰였습니다~~

private final PostService postService;

@PostMapping("/post")
public String reigster(@RequestBody final PostRegisterRequestDto request){

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

final 키워드를 붙이는 것과 안붙이는 것의 차이는 무엇일까요?

Comment on lines +35 to +38
Post post = postService.getPostById(postID);
if (Objects.isNull(post)){
return "글 조회 실패";
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

자바 문법 중 Optional 에 대해 검색해보시는 것을 추천합니다!
그리고, 예외는 언제 터트려야 가장 이상적일까요?

Comment on lines +48 to +50
if (Objects.isNull(post)){
return "글 검색 실패";
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

시간이 된다면 윗 코멘트와 같이 Exception에 대해 학습해보시면 좋을 것 같습니다!

Comment on lines +9 to +10
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@requiredargsconstructor@AllArgsConstructor 둘 다 사용하고 계신데, 둘의 차이점은 무엇일까요?

Comment on lines +58 to +62
// contains와 indexOf의 로직을 그대로 쓰려면
// 1. User의 equals 오버라이딩
// 2. User 생성자 오버로딩(name 만으로 비교용 임시객체만들도록) <- 솔직히 이부분이 젤 짱나서 결국 이로직 안씀
// 3. userList.indexOf(new User(이름)) 으로 User의 equals가 실행되게 하기
// 위의 3가지 단계를 써야하는 데 너무 번잡스러워서 걍 안쓸래요 ㅅㄱ!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

equalsandhashcode 라는 어노테이션이 있습니다:)

Copy link

@ditoo-land ditoo-land left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

되게 열심히 학습하시는 모습에 저도 배워갑니다!
고생하셨습니다.


//왜 재정의하느냐....
// List의 contains() 메소드와 indexOf() 메소드는 List안에 값이 같으면 true를 리턴하는데
// 이때 '값이 같으면'이 List안의 객체의 equals 메소드를 실행시켜 확인하기 때문
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

저도 좋은 내용 알아가용!!!!

);
*/

*/

//그냥 원시적으로 반복문 돌릴께요 ㅇㄴ
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제일 직관적인 방법 ㅎㅎㅎㅎㅎㅎ

// 2. User 생성자 오버로딩(name 만으로 비교용 임시객체만들도록) <- 솔직히 이부분이 젤 짱나서 결국 이로직 안씀
// 3. userList.indexOf(new User(이름)) 으로 User의 equals가 실행되게 하기
// 위의 3가지 단계를 써야하는 데 너무 번잡스러워서 걍 안쓸래요 ㅅㄱ!

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이렇게 주석으로 고민했던 내용 달아주니 너무 좋은것 같아요..!! 저도 다음에 반영해서 제 흐름도 공유해볼게요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants