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

hjle29님의 프로필 이미지
hjle29

작성한 질문수

김영한의 실전 자바 - 중급 2편

와일드카드2

제네릭 타입이나 메서드를 정의할 때에 <T extends Animal>

작성

·

210

0

 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.


1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
제네릭 타입이나 메서드를 정의할 때에 상한 제한을 두기 위해서 <T extends Animal> 로 지정하였는데,

이렇게 지정하면 <Animal> 로 지정하는 것과 같은 효과가 나는 것이 아닌가요?

만약에 맞다면, 굳이 왜 T extends Animal 이라는 방법을 사용하는지 궁금합니다.

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

hjle29님의 질문에 대해, 제네릭 타입 또는 메서드를 정의할 때 <T extends Animal>을 사용하는 이유를 설명드리겠습니다. <T extends Animal> 구문은 “타입 매개변수 제한”과 관련된 Java의 제네릭 기능입니다. 이 구문을 사용하는 주된 이유는 상한제한, 즉 T가 상속 가능한 타입의 가능성을 제한하기 위해서입니다. 이렇게 하면 T로 전달될 수 있는 타입을 Animal 클래스 또는 Animal 인터페이스를 상속(또는 구현)한 서브클래스만으로 제한합니다. 이는 Animal로 직접 지정하는 것과는 다릅니다.

<T extends Animal>은 Animal 타입 또는 그 타입의 하위 클래스만 T로 사용할 수 있도록 제한한다는 의미입니다. 이 제한은 코드의 범용성을 유지하면서도, 타입 안전성을 보장하게 합니다. 즉, Animal 클래스의 메서드 및 속성에 안전하게 접근할 수 있고, 더 구체적인 타입 관련 작업을 할 때 컴파일러에 의해 타입 체크가 이루어지게 하는 장점이 있습니다.

이와 관련해 이미 공유된 답변 링크를 참조해보시면 도움이 될 것 같습니다. “타입 매개변수 제한 강의 질문“에서 비슷한 주제에 관한 설명을 찾아볼 수 있습니다. 이 답변에서는 타입 매개변수 제한의 기초적인 개념과 사용 예를 설명하고 있습니다.

또한, 제네릭 타입의 이해와 활용에 도움을 줄 수 있는 다른 게시글 “타입 이레이저 질문“도 추천드립니다. 이 게시글에서는 제네릭 타입이 컴파일 후 어떻게 처리되는지에 대한 질문에 대한 답변이 포함되어 있어 혼란을 줄이는 데 도움이 될 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

hjle29님의 프로필 이미지
hjle29
질문자

답변 너무 빨라서 깜짝 놀랐어요..! 감사합니다ㅎㅎ
빨리 + 친절하게 답변해주셔서 더 열심히 공부할 열의가 생기는거 같아요! 뿜뿜

hjle29님의 프로필 이미지
hjle29

작성한 질문수

질문하기