작성
·
608
0
안녕하세요, 영한님 강의를 듣다가 궁금한 부분을 질문드립니다!
return new Result(collect.size(), collect);
static class Result<T>{
private int count;
private T data;
}
-> count값은 강의에서 4
위와 같은 조회 부분에서 Dto 클래스인 Result에 count 변수를 선언하면 collect.size()로 바로 연결이 됨을 볼 수 있었는데,
이는 2개의 파라미터가 순서대로 적용되어 Result라는 객체가 생성되어서 그렇다고 이해하면 되는지 궁금합니다.
너무 기초적인 질문 같은데 초보라서 그렇다고 너그럽게 이해 부탁드립니다.
항상 감사합니다..
답변 2
1
1
안녕하세요 LucasBae님
이해하신게 맞습니다만 강의에서 사용하신 코드를 보면 스트림에 제네릭까지 쓰기 때문에 조금 어렵게 느껴지셨을 수도 있겠네요. 구조가 복잡하니 알고 있던 내용이더라도 어렵게 다가올 수 있을 것 같습니다. 그래서
저 같은 경우엔 어렵게 느껴지는 부분이 있다면 제가 알고 있는 내용으로 비슷하게 바꿔서 이해하려고 합니다.
@GetMapping("/people")
public Team getMembers() {
Person person1 = new Person(1L, "아이유");
Person person2 = new Person(2L, "김영한");
Person person3 = new Person(3L, "OMG");
List<Person> people = List.of(person1, person2, person3);
return new Team(people.size(), people);
}
@Data
@AllArgsConstructor
static class Team {
private int count;
private List<Person> person;
}
@AllArgsConstructor
@Data
@NoArgsConstructor
public class Person {
private Long id;
private String name;
}
팀 클래스는 회원 수와 회원들을 <List>로 갖을 수 있고, 스트림 대신 명시적으로 리스트에 값을 대입하는 방식으로 바꿔보았는데요, 이러한 구조 속에서 이해하신대로 제가 작성한 예시로 본다면 첫번째 인자로 count를, 두번째 인자로 List를 필요로 한다고 할 수 있습니다.
인텔리제이를 사용하신다면 아래와 같이 new Team(<커서위치>) 커서 위치에서 ctrl + p 누르면 어떤 값을 인자로 받는지 볼 수 있거든요, 이걸 참고하시면 클래스의 변수 순서를 봐야하는 번거로움을 줄 일 수 있습니다.
또한 결과 출력 화면에서도 볼 수 있다시피 count 이후에 person을, id 이후에 name의 순서를 띄는것을 볼 수 있구요.
이해가 안가거나 보충 설명이 필요하시면 댓글 남겨주세요.
감사합니다.
이해가 되었다니 다행입니다.
열공하세요!
화이팅!!