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

현집님의 프로필 이미지
현집

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

간단한 주문 조회 V2: 엔티티를 DTO로 변환

내부 클래스 질문

해결된 질문

작성

·

562

1

안녕하세요 선생님! 바쁘신데 이곳저곳 여러번 질문드려 죄송합니다. 강의를 복습하다가 정말 궁금한게 생겨서요..

Request Dto는 인자로 받아야돼서 테스트같은 곳에서 직접 생성해야하 되기 때문에 static으로 선언했고, Response Dto 같은 경우에는 그럴 필요가 없기 때문에 non-static으로 선언했다고 이해했습니다.

그런데 이런 경고가 뜨길래 찾아봤더니 

이펙티브 자바에서 메모리 문제나 gc 문제 떄문에 바깥 인스턴스에 접근할 일이 없다면 무조건 static을 붙여서 정적멤버 클래스로 만들라고 되어있습니다.

실제 프로젝트나 실무에서는 reponse dto처럼 외부에서 직접 생성할 일이 없어도 static inner class로 선언해야 될까요?

정말 감사합니다.

답변 2

1

현집님의 프로필 이미지
현집
질문자

답변 감사합니다!!

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 현집님

저도 이 부분에 크게 신경을 쓰지 않았는데, 말씀해주신 내용을 듣고, 찾아보니 말씀하신 것 처럼 예제에서는 바깥 인스턴스에 접근하지 않기 때문에 static으로 만드는 것이 참조 메모리 공간을 줄일 수 있네요.

gc 문제는 아마도 외부 클래스가 GC 대상이 되어야 할 때, 내부 클래스가 외부 클래스를 참고하고 있으니 GC 문제가 발생할 수 있다고 하는 것 같네요. 이 부분은 이 예제에서는 외부 클래스가 싱글톤으로 생성되니 크게 상관이 없을 것 같아요.

알려주셔서 감사합니다^^!

(저도 이런 경우에는 static으로 쭉 사용해야겠네요 ㅎㅎ)

현집님의 프로필 이미지
현집

작성한 질문수

질문하기