인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

Sangjun Lee님의 프로필 이미지
Sangjun Lee

작성한 질문수

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

정리

제네릭 상한 설정을 위해 생성자를 활용하는 것이 extends보다 못한 점이 무엇인가요?

작성

·

53

·

수정됨

0

[질문 내용]
제네릭의 상한 설정을 소개하시기 전에 어떻게 특정 타입만을 받도록 할지 혼자 고민을 해 보았는데, 클래스 생성 시 생성자를 통해 받을 타입을 제한하면 어떨까 생각했습니다.

 

public class Box<T> {

  private T animal;

 

  public Box(Animal animal) {

    this.animal = (T) animal;

  }

}

 

결과적으로 문제를 해결하기는 했는데, 이 방법에도 여전히 문제가 있기 때문에 extends를 이용하는 거겠죠? 상기한 방법이 extends를 이용하는 방법보다 못한 점이 무엇인지 궁금합니다.

 

답변 1

1

타입 T를 animal이 아닌 다른 타입을 주면, 오류가 나서 사용을 못합니다.

T 타입이 만약에 pood(식량) 이라면, animal이 식량에 못 들어 가기 때문에,

캐스팅 오류가 나서 작동을 못합니다. 그래서 exntds로 animal + 자식들만 들어오게 만든 것 입니다.

Sangjun Lee님의 프로필 이미지
Sangjun Lee

작성한 질문수

질문하기