해결된 질문
작성
·
1.2K
3
안녕하세요 강사님! 코루틴 강의를 너무 재밌게 들어서 고급편까지 오게 되었습니다.
지금 변성과 관련된 내용까지 수강하였고, 이 내용을 다음과 같이 이해하였습니다.
변성은 타입 인자로 전달된 클래스 간의 상속 관계를 제네릭 클래스에도 적용하기 위한 개념이다.
변성이 적용된 경우, 타입 안전성을 위해 생산자 또는 소비자 역할만을 수행할 수 있다.
그런데 저는 아직 개발 경험이 부족해서 그런지, 강의에서 보여주신 Cage<T>
와 같은 상황이 발생할 수 있다는 점은 공감하지만 실제로 그런 상황을 마주한 적은 없던 것 같습니다.
아무래도 제가 작성했던 로직 상 타입 인자로 전달된 클래스의 상속 관계를 제네릭 클래스에도 적용해야 할 필요성을 느껴본 적이 없어서 그랬던 것 같은데, 이렇듯 로직 상 임의의 제네릭 클래스에 변성을 줄만한 이유가 없는 상황에서도 생산자 / 소비자의 역할을 고려하여 변성을 명시하는 것이 best practice인지 궁금합니다!
답변 1
6
안녕하세요, 잉G님!! 크으~~~ 정말 좋은 질문 감사드립니다! 😊
두 가지로 정리해주신 내용이 정확히 맞습니다! 👍
결론부터 말씀드려 보자면, "로직 상 임의의 제네릭 클래스에 변성을 줄만한 이유가 없는 상황에서" 는 굳이 변성을 주지 않으셔도 괜찮습니다! 변성이 필요한 경우에만 적절히 사용하면 충분하죠!!
저 역시 도메인 모델을 개발할 때나 애플리케이션 개발을 할 때 제네릭을 종종 사용하는 일은 있어도 제네릭에 변성을 적극적으로 활요하는 경우는 적었습니다.
다만, 개발을 하다 보면 프레임워크 혹은 라이브러리의 코드를 읽어야 하거나 특정 부분을 깊이 있게 이해해야 할 때, 변성을 접하는 일은 많았습니다. 🙂 그럴 때를 대비해 개념 정도를 알아두신다면, 정말 도움 되실거라 생각합니다.
답변이 도움이 되었으면 좋겠습니다. 감사합니다!! 🙏